Angular FormControl:未触发异步验证程序以验证无效输入

Angular FormControl:未触发异步验证程序以验证无效输入,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我正在尝试使用承诺实现远程服务器验证程序,但是文本输入没有被触发 `app.component.html' <form [formGroup]="myForm"> Foo: <input type="text" formControlName="foo"> <span *ngIf="!myForm.get('foo').valid">Not valid foo</span> </form> 'app.component.ts'

我正在尝试使用承诺实现远程服务器验证程序,但是文本输入没有被触发

`app.component.html'

<form [formGroup]="myForm">
  Foo: <input type="text" formControlName="foo">
  <span *ngIf="!myForm.get('foo').valid">Not valid foo</span>
</form>
'app.component.ts'

ngOnInit() {    
  this.myForm = new FormGroup({
    'foo': new FormControl(null, [Validators.required, this.validateAsync.bind(this)])
  }); 
}

validateAsync(control: FormControl): Promise<any> | Observable<any> {
    const promise = new Promise<any>((resolve) => {
        //post the control.value and check for the response value: fooIsValid
        if (fooIsValid)
            resolve(null); 
        else
            resolve({'FooRuleValidation': true});
    });
    return promise;
}

我做错了什么?我注意到它使required也不能工作。

您需要将异步验证器函数作为第三个参数传递

试试这个:

this.myForm = new FormGroup({
    'foo': new FormControl(null, [Validators.required],[this.validateAsync.bind(this)])
 });