自定义Angular 4验证程序取决于动态值
我必须创建一个自定义验证器自定义Angular 4验证程序取决于动态值,angular,validation,angular4-forms,Angular,Validation,Angular4 Forms,我必须创建一个自定义验证器validLocation 因此,当用户输入一个值时,searchLocation将获得搜索的值,并通过Ajax设置location 问题是如何在验证指令中跟踪location 我试着使用@InputvalidLocation和ngOnChanges但是一旦设置了新数据,如何触发验证,这将在承诺解决后设置 感谢您的帮助。如果我理解正确,您可以将您的承诺或观察传达给您的指令,并在其解决时检查其价值,例如: @Directive({ selector: '[validLo
validLocation
因此,当用户输入一个值时,searchLocation
将获得搜索的值,并通过Ajax设置location
问题是如何在验证指令中跟踪location
我试着使用@InputvalidLocation
和ngOnChanges
但是一旦设置了新数据,如何触发验证,这将在承诺解决后设置
感谢您的帮助。如果我理解正确,您可以将您的承诺或观察传达给您的指令,并在其解决时检查其价值,例如:
@Directive({ selector: '[validLocation]' })
export class ValidLocation implements OnInit {
isPromiseDone: boolean;
promise: any;
@Input()
set validLocation(passedValue: any) {
if (!passedValue) {
return;
}
const isObservable: boolean = passedValue instanceof Observable;
const isSubscription: boolean = passedValue instanceof Subscription;
const isPromise: boolean = passedValue instanceof Promise;
if (isObservable) {
this.promise = passedValue.toPromise();
} else if (isSubscription) {
this.promise = new Promise((resolve) => {
(passedValue as Subscription).add(resolve);
});
} else if (isPromise) {
this.promise = passedValue;
}
this.checkAndInitPromiseHandler();
}
constructor() {}
initPromiseHandler() {
const promise = this.promise;
this.isPromiseDone = false;
const resolveLoadingState = () => {
this.isPromiseDone = true;
this.doSomething()
};
if (promise.finally) {
promise.finally(resolveLoadingState);
} else {
promise
.then(resolveLoadingState, resolveLoadingState);
}
}
checkAndInitPromiseHandler() {
if (this.promise) {
this.initPromiseHandler();
}
}
ngOnInit() {
this.checkAndInitPromiseHandler();
}
doSomething(){}
}
你能分享更多的代码或添加你的样本吗?