私はngOninitで構築されたフォームグループを持っていますしかし、後でそのコントロールの1つをクリックすると、ngOninitの別のAPIから取得した値に基づいて、既存のフォームグループにさらにいくつかのコントロールを追加したいと思います。下の写真は実際の要件を示しています。他のロールをクリックしたときに、APIから取得した他のロールコントロールを表示したいと思います。
"Angular 2"を初めて使用したので、だれかがこの問題から抜け出すのを手伝ってくれる?
回答:
回答№1は1あなたは以下のアプローチで試すことができます。
const arrayControl = <FormArray>this.myForm.controls["formArray"];
let newGroup = this.fb.group({
/// new controls
}
arrayControl.push(newGroup);
回答№2の場合は0
それがあなたが求めているものであれば、あなたは自分のフォームをコントロールし検証するメソッドを追加することができます。
何かのようなもの:
<button type="submit" (click)="save(f.value, f.valid)">Submit</button>
どこにあなたの save()
フォームなどを検証できるメソッド。
Angular 2のフォームコントロールの詳細: https://scotch.io/tutorials/how-to-deal-with-different-form-controls-in-angular-2
更新:
Angular 2を使い慣れていないので、これは 必読 あなたのために: https://angular.io/docs/ts/latest/cookbook/dynamic-form.html
動的フォームがAngular 2でどのように動作するのか、そしてそれらをどのように実装するのかを理解することは非常に役に立ちます。
アップデート2:
私はあなたの質問をひどく理解しました。あなたが欲しいものがあなたのフォームに動的に要素を追加することであるならば、最も簡単なアプローチは使うことでしょう *ngIf
要素を動的に表示/非表示にするため。
例:
<input type="text" *ngIf="showInput"/>
ドキュメンテーション: NgIf指令