私はフォーム配列を持っていますが、別のフォームをプッシュするとpreviusフォームの検証が設定されています。角度でフォームグループアレイをリセットする方法
この例では[https://plnkr.co/edit/ApCn3YicMjfm2vhSOudj?p=preview][1]
https://plnkr.co/edit/ApCn3YicMjfm2vhSOudj?p=previewですが、2番目のフォームに名前の検証が表示されていますが、どのように解決できますか?
私はフォーム配列を持っていますが、別のフォームをプッシュするとpreviusフォームの検証が設定されています。角度でフォームグループアレイをリセットする方法
この例では[https://plnkr.co/edit/ApCn3YicMjfm2vhSOudj?p=preview][1]
https://plnkr.co/edit/ApCn3YicMjfm2vhSOudj?p=previewですが、2番目のフォームに名前の検証が表示されていますが、どのように解決できますか?
上記のコメントに基づいて、プランナーと一緒にいたずらすると、私はついにあなたが求めているものを見ると思います。
この問題は、フォームの仕組みと関係があります。
1)自体は、ビューに表示されたフォーム要素:
フォームは、二つの部分を有しています。
2)フォームデータ構造は、あなたが持っている反応形式のために、this.user
変数でコンポーネントコードで定義されています。フォームの値と有効性の状態を追跡するのはこのデータ構造です。
あなたのコードを見ると、ngForは複数のフォーム要素(上記の#1)を作成していますが、と同じフォームデータ構造(上記#2)を使用しています。したがって、複数のフォームは常に同じ値を表示し、同じ検証状態を持ちます。
あなたはformArrayを構築し、作成したすべての "フォーム"に対してその配列にエントリを作成する必要があります。
私はここにフォームの配列の例を持っている:あなたはそれぞれに別々のFormGroupを作成することができますので、https://github.com/DeborahK/Angular2-ReactiveForms
すべてのフォームは、フォームデータを保持して述べ、「ユーザー」という名前の、ここで同じFormGroupを、共有しますフォームを送信するか、submitメソッドのたびに "user"の値をリセットしますが、後者は現在のフォームがデータを失ってしまいます。彼らは "user"を共有しました。
onSubmit({ value, valid }: { value: User, valid: boolean }) {
console.log(value, valid);
this.data.push(value)
this.user = this.fb.group({
name: ['', [Validators.required, Validators.minLength(2)]],
account: this.fb.group({
email: ['', Validators.required],
confirm: ['', Validators.required]
})
});
console.log(this.data)
}
あなたの正確な問題は何ですか? – Ajith
フォームに記入して送信すると、2番目のフォームが最初のフォームのバリデーションを持つことがわかります。 '有効な名前'というメッセージが表示されます。2番目、3番目などのフォームをリセットして他のフォームのバリデーションを表示しないようにします。 – LLaza
私は提出するときに空白のフォームが必要だと思います、そうですか? – Ajith