Angular專案中非同步校驗處理
阿新 • • 發佈:2018-12-04
Angular中建立非同步校驗指令 phone-validator,並在相對應的module檔案中declarations{}下宣告該指令函式,
@NgModule({
declarations: [
PhoneValidatorDirective,
],
該校驗器會實現一個validate()方法,返回結構為Promise<> 或者 Observable<>
validate(control: AbstractControl):Promise<ValidationErrors| null> | Observable<
ValidationErrors| null>{
// 我的返回資料結構為Observable<Result<string>>
//control.value 為當前控制元件的值
this.us.verifyPhone(control.value).pipe(){ //rxjs程式設計 函式式操作
//map操作符用於資料型別轉換
map((rs: Result<string>)=>{
return rs.success ? null:{verifyPhone: true};
}),
//of下封裝了一個Observable<ValidationError>並返回
catchError(e=>of({verifyPhone: true}));
}
}