簡體   English   中英

Angular2反應形式,原始狀態下的FormControl默認值

[英]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));

您現在可以使用pristinetouched此變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM