这是我的有效验证方法(但请注意,我尝试在哪里偷偷溜去):
/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}}关联了
答案 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>