[英]Angular2 Reactive forms, FormControl default value in pristine status
我創建了一個表單,該表單允許用戶通過單擊按鈕來添加其他文本輸入。 這些輸入后面的FormControl
存儲在FormArray
內部的FormGroup
。
我想為這些輸入提供一個默認值,如果它們是原始的,它將被提交。 如果用戶更改了輸入的值(將其更改為臟),則我不希望提交或顯示默認值。
我目前正在顯示這樣的輸入,因為占位符屬性完全符合我的要求,僅當輸入未更改時才顯示默認名稱。
<div
formArrayName="names"
*ngFor="let server of names.controls; let i = index; trackBy:trackByFn">
<span>{{ i + 1 }}</span>
<input
type="text"
formControlName="{{i}}"
placeholder="{{defaultName}}">
</div>
為了驗證名稱,我創建了以下驗證功能:
export function validateServerName(form: FormGroup): ValidationErrors | null {
const names: string[] = form.value[CREATE_FORM_KEY_NAMES];
for (const name of names) {
if (name.trim() === '') {
return {
invalidName: true
};
}
}
return null;
}
在這里,我很難弄清楚該元素是臟的還是原始的,因為form.value[key]
僅返回一個字符串數組,而不是FormControls的數組。
我正在尋找一種更簡單的方法來完成我要達到的目標,或者尋找一種正確驗證表單的方法。
您可以使用以下命令檢查控制狀態
如果感動是真的,那么它是骯臟的
this.form.get('controlname').touched
對於原始的,你可以檢查像
this.form.get('controlname').pristine
更新
對於表單數組,它將類似於
let val = this.user.get('<FormArray>') as FormArray;
console.log(val.at(index));
您現在可以使用pristine
並touched
此變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.