heroForm
form array を含むものがありますentities
。すべてのアイテムはFormGroup
.
次に例を示します。
this.heroForm = this.fb.group({
entities: this.fb.array([]),
});
配列に新しいグループを追加する方法は次のとおりです。
addEntity() {
this.entities.push(this.createFormGroup(new Address()));
}
単一のグループを作成する方法は次のとおりです。
createFormGroup(address: Address) {
return this.fb.group({
'street': new FormControl(address.street, []),
'city': new FormControl(address.city, [duplicateCity]),
'state': new FormControl(address.state, []),
'zip': new FormControl(address.zip, [])
});
}
カスタム検証関数は次のとおりです。
function duplicateCity(input: FormControl): any {
if (!input.root || !(<FormGroup>input.root).controls) {
return null;
}
// Do some validation.
input.value === ...
}
ここで、トラフ コントロールを繰り返し処理しCity
、それらの値を比較したいと思います。都市名が 2 回出現することがわかった場合は、エラーを返したいと思います。
問題は、同じコントロールを比較したくない、スキップしたいということです。これを行う正確な方法は何ですか?