相关疑难解决方法(0)

Angular 2 /如何防止IE触发自动输入验证?

我在Angular 2应用程序中使用了表单ngControl.例:

<label for="login-field-inputLogin" class="sr-only">Login</label>
<input 
    [(ngModel)]="login" 
    id="login-field-inputLogin" 
    class="form-control" 
    placeholder="Login" 
    ngControl="loginCtrl" 
    #loginCtrl="ngForm" 
    type="text" 
    required />
<div [hidden]="loginCtrl.valid || loginCtrl.pristine" class="alert alert-danger">Login is required</div>
Run Code Online (Sandbox Code Playgroud)

不幸的是,在IE 11上,当有一个占位符时,一旦该字段获得焦点,就会显示消息"需要登录".

我为AngularJS找到了解决这个问题的方法.请参阅AngularJS /如何防止IE触发自动输入验证?

如何使这个解决方案适应Angular 2?

internet-explorer angular

10
推荐指数
1
解决办法
4547
查看次数

Angular 5,Angular Material:Datepicker验证不起作用

我正在使用最新的Angular和最新的Angular Material.我有一个datepicker,我想添加一些验证.文档说该required属性应该开箱即用,但它似乎不像其他表单元素那样处理错误.

这是我的加价:

<mat-form-field class="full-width">
    <input matInput [matDatepicker]="dob" placeholder="Date of birth" [(ngModel)]="myService.request.dob" #dob="ngModel" required app-validateAdult>
    <mat-datepicker-toggle matSuffix [for]="dob"></mat-datepicker-toggle>
    <mat-datepicker #dob></mat-datepicker>
    <mat-error *ngIf="dob.errors && dob.errors.required">Your date of birth is required</mat-error>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

这适用于happy-path,因此当选择日期时,日期最终会出现在期望的属性中myService.

然而,验证并不像我期望的那样有效; 在这种情况下,如果我在没有输入日期的情况下单击该字段然后退出该字段,则输入获得红色样式,但通常的[controlName].errors对象不会被填充.这意味着以通常的方式显示错误消息(与同一页面上不是日期选择器的其他输入一起使用的方式)不起作用:

<mat-error *ngIf="dob.errors && dob.errors.required">Your date of birth is required</mat-error>
Run Code Online (Sandbox Code Playgroud)

*ngIf因为日期选择器似乎从来没有更新是不正确的dob.errors,这样就不会显示错误消息,即使输入的样式为无效.

这是正确的吗?我错过了什么吗?

我还尝试添加一个自定义指令来验证使用datepicker选择的日期表明用户已超过18:

export class AdultValidator implements Validator {
  constructor(
    @Attribute('app-validateAdult') public validateAdult: string
  ) { }

  validate(control: AbstractControl): { [key: string]: any } {
    const …
Run Code Online (Sandbox Code Playgroud)

javascript validation typescript angular-material2 angular

9
推荐指数
2
解决办法
2万
查看次数

Angular 5是否仅对模糊进行验证?

我想知道是否有可能以模糊的反应形式进行验证。目前,您可以进行设置,updateOn: "blur"但是输入字段的值不会在输入时更新。在我的情况下,我需要在每次击键时更新值,因为我会用它进行计算并将结果显示给用户。验证应仅在模糊时进行。

谢谢。

编辑:

我使用FormBuilder,一些内置的验证器和一些自定义的验证器。示例代码:

let formToMake = {
  purpose: [null, Validators.required],
  registrationDate: this.fb.group({
    day: [null, Validators.required],
    month: [null, Validators.required],
    year: [null, Validators.required]
  }),
  isTruth: [null, Validators.compose([checkIfTrue, Validators.required])]
};
Run Code Online (Sandbox Code Playgroud)

如果我要使用模糊事件,则需要手动进行所有验证,但我认为这不是一个好方法。

javascript angular-validation angular angular5

6
推荐指数
1
解决办法
9348
查看次数