0

heroFormform 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 回出現することがわかった場合は、エラーを返したいと思います。

問題は、同じコントロールを比較したくない、スキップしたいということです。これを行う正確な方法は何ですか?

4

1 に答える 1