2
템플릿 구동 양식에 대해 비동기 검증기를 만들었습니다.Async Validator가 Template driven Forms with Angular로 작동하지 않습니다.
import {Directive, forwardRef} from "@angular/core";
import {NG_ASYNC_VALIDATORS, Validator, AbstractControl, AsyncValidator} from "@angular/forms";
import {Observable} from "rxjs";
@Directive({
selector: '[asyncValidator][ngModel]',
providers: [{
provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => AsyncAgeValidator), multi: true
}]
})
export class AsyncAgeValidator implements Validator{
validate(c: AbstractControl): Observable<{[key : number] : any}>{
return this.validateAgeObservable(c.value);
}
validateAgeObservable(age: number) {
return new Observable(observer => {
if(age === 20) {
observer.next(null);
} else {
observer.next({asyncInvalid: true});
console.log('validate');
}
});
}
}
}
다음과 같이 내 템플릿에서 사용하고 있지만 템플릿의 유효성 검사기에서 예상 한 오류 메시지가 표시되지 않습니다. 호출이 유효성 검사기로 가고 있지만 구성 요소에 관찰 가능 항목을 등록하지 않은 것 같습니다.
<md-input-container>
<input mdInput type="number" name="age" [(ngModel)]="user.age" placeholder="Age" required asyncValidator>
</md-input-container>
안녕하세요! 이것에 대한 답을 알고 있습니까? http://stackoverflow.com/questions/44044163/how-to-query-the-user-inside-my-service – Coder1000