我寫了一個自定義驗證程序,用於檢查日期是否高於某個最小日期。Angular 4 - 使用動態參數值的自定義驗證程序
的代碼如下所示:
export function validateMinDate(min: Date): ValidatorFn {
return (c: AbstractControl) => {
if (c == null || c.value == null)
return null;
let isValid = c.value >= min;
if (isValid) {
return null;
} else {
return {
validateMinDate: {
valid: false
}
};
}
};
}
我initate這樣
this.definitionForm = this.fb.group({
"from": [this.details.From, Validators.required],
"to": [this.details.To, [Validators.required, validateMinDate(this.details.From)]]
});
我的形式,我可以看到正在應用的驗證,但是當我console.log()
我最小值的驗證我可以看到它等於null
。
this.details.From
在我啓動表單時從null開始,所以我假設參數不是動態的,只是在表單被設置時才取值。
如何確保在用戶選擇起始日期時更新最短日期,從而更改this.details.From
的值?
您可以嘗試使用驗證器作爲指令並注入一個服務,您可以使用this.details.From的最新值進行更新。 –
你所要做的就是觀看'From'日期,在每次更改中你都必須將驗證器重置爲控件'to',你使用的是日期選擇器嗎?或者只是一個簡單的輸入。 ? –