如何将 composeAsync 添加到 angular 5 个验证器

How to add composeAsync to angular 5 validators

我正在使用响应式表单方法开发 Angular 5 表单模块。在我的表单控件之一的那个表单中,我需要完成一些后端验证, 有人可以帮助实现 composeAsync 函数处理后端验证吗?

这是我的实现方式(用于用户名检查)

首先我添加了remort验证的报表验证功能

this.regForm = this.fb.group({
      userName: ['', Validators.required, 
                 this.validateUserIDNotTaken.bind(this) ],
      password: [ '', [Validators.required]]
});

然后

validateUserIDNotTaken(control: AbstractControl) {
    return this.userService.validateUserIDNotTaken(control.value).map(res => {
      return res ? null : { unTaken: true };
    });
}

在用户服务中

export class validateUserIDNotTaken{
  static createValidator(userService: UserService) {
    return (control: AbstractControl) => {
      return userService.validateUserIDNotTaken(control.value).map(res => {
        return res ? null : { unTaken: true };
      });
    };
  }
}

并将其添加到模板中

<div *ngIf="regForm.get('userName').errors && regForm .get('userName').errors.unTaken">
   This userName is already taken!
</div>