我可以通过角度自定义验证方法返回字符串值吗

时间:2019-09-20 01:09:15

标签: angular rxjs

这是我的有效验证方法(但请注意,我尝试在哪里偷偷溜去):

/api/v1/...

这就是我在组件中调用它的位置(并且也想从上方使用该名称,但是如何使用管道?

  checkIfEmailExists(email: string): Observable<object | null> {
    return this.store.pipe(
      select(selectAssigneeNameByEmail(email)),
      debounceTime(500),
      take(1),
      map(name => {
        return res ? { alreadyExists: true, name } : null;
      })
    );

html:

 alreadyExists(control: AbstractControl): object {
    return this.emailAlreadyExistsValidator.checkIfEmailExists(control.value)
 }

所以,我只想能够使用上面的资源说,对不起,电子邮件已经与{{name}}关联了

1 个答案:

答案 0 :(得分:2)

由于从验证返回的错误对象已经返回了名称(通过{alreadyExists: true, name}对象),因此您可以简单地从以下形式获取它:

<mat-error *ngIf="form.hasError('alreadyExists', 'email')">
  email already associated with {{ form.getError('name', 'email') }}
</mat-error>

IMO的一个好主意是直接从验证器返回相关的错误消息:

return res ? { alreadyExists: `E-mail already associated with ${name}` } : null;

然后在HTML上

<mat-error *ngIf="form.getError('alreadyExists', 'email'); let errorMsg">
  {{ errorMsg }}
</mat-error>