我正在調用web api來檢查urlalias是否可用,對於此任務,我在我的異步驗證程序中使用了httpservice。 問題是,當調用驗證程序時,將執行所有正確的代碼路徑(所有console.log()
運行並按預期行爲)。定製異步驗證在返回承諾時不起作用
無論驗證中的承諾是否返回/解析爲空或一個{ 'isUrlAliasActivityMainAvailable': true }
,控制器總是顯示一個錯誤對象,因此保持表單狀態爲無效,爲什麼(血腥地獄!)?
我使用的是:角:2.1.0和rxjs:5.0.0-beta.12
這是我formbuilder:
this.formBuilder.group({
//...
"urlAliasActivityMain":[null,[ ValidatorsZr.isUrlAliasActivityMainAvailableAsyncValidator(this.httpActivityService)]],
});
這是我的驗證:
public static isUrlAliasActivityMainAvailableAsyncValidator(httpActivityService: HttpActivityService) {
return function (control: FormControl): Promise<any> | Observable<any> {
const promise = new Promise<any>(
(resolve, reject) => {
httpActivityService.isUrlAliasActivityMainAvailable(control.value)
.subscribe(
(data: any) => {
console.log("isUrlAliasActivityMainAvailableAsyncValidator");
console.log(data);
if (data == false) {
console.log("data == false");
resolve({ 'isUrlAliasActivityMainAvailable': true });
}
else {
console.log("data == true");
resolve(null);
}
},
)
});
return promise;
}
}
媽呀,很慚愧我的!感謝您的幫助,您一直是一個偉大的節省時間! – Luther
因爲這件事我浪費了大約4個小時。 –
這節省了將來的大聲笑,現在和它搏鬥了一天,不知道這是我放置它的位置 –