我一直有錯誤:
**ERROR Error: NG01101: Expected async validator to return Promise or Observable.
Find more at https://angular.io/errors/NG01101**
此錯誤 URL 不存在。錯誤發生在驗證器的呼叫中。
這是我的代碼:
app.component.ts
import {Component} from '@angular/core';
import {FormBuilder,FormGroup,Validators} from '@angular/forms';
import {EmailValidator} from email.validator';
export class AppComponent{
form: FormGroup;
constructor(fb: FormBuilder) {
this.form = fb.group({
email: ['bla@alem.pt', {asyncValidators:[EmailValidator(this.apiService)],updateOn: 'blur'}] //UPDATED with the help of Volodymyr Herchuk
});
}
}
email.validator.ts
import {AbstractControl, AsyncValidatorFn} from '@angular/forms';
import {ApiService} from '../services/api.service';
import {map} from 'rxjs';
export function EmailValidator(apiService:ApiService):AsyncValidatorFn{
return (control: AbstractControl)=>{
return apiService.validateEmail(control.value)
.pipe(
map(response=>{
return response.valid?response.valid:null;
})
);
};
}
api.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root',
})
export class ApiService {
constructor(private http: HttpClient) {}
//returns {valid:true} or {valid:false}
public validateEmail(email: string){ // Observable
return this.http.get('/api/:email'.replace(':email', email)
);
}
}
我一直在閱讀很多例子,特別是這個視頻,這是一個類似的案例,但我找不到解決方案。誰能告訴我我錯過了什么?謝謝你。
uj5u.com熱心網友回復:
嘗試EmailValidator()讓它回傳驗證器函式,而不僅僅是EmailValidator
我想將其添加為評論,但我不能((
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/525327.html
標籤:有角度的http异步
