私はFormArray
のフィールドを一度に検証したいと思います。 FormArray
を繰り返し、各要素(FormGroup
)に対して、有効なFormGroup
を無効にして、ユーザーがそれを変更しないようにして、エラーをFormGroup
内の特定のFormControl
に設定しています。角度:ループ内でsetErrorsが機能しない
以下は私のコードです。 rows
はFormArray
です。
response.forEach((item, index) => {
if (item.detailName.valid && item.detailNo.valid)
(<FormArray>this.detailForm.get('rows')).at(index).disable({
onlySelf: true
});
else if (!(item.detailName.valid && item.detailNo.valid))
if (!!item.detailName.value && !item.detailNo.value)
this.detailForm.get(['rows', index, 'detailName']).setErrors({
'invalidValue': true
});
else
this.detailForm.get(['rows', index, 'detailNo']).setErrors({
'invalidValue': true
});
});
エラーは意図したとおりに設定されていません。そのコントロールは、console.log
ならばVALID
と表示されます。
更新:setTimeout
でラップして動作させました。
問題に関連しているかどうかわかりませんが、7行目の条件は決して実行されません –
どうしてですか?私は値が存在するかどうかをチェックしています( ""ではなく)。 – karthikaruna
Ops、申し訳ありません "値"の代わりに "有効" –