私はAngular4より特異的な反応型を学んでいます。私はヒーローズのデモを実行していた、と私は何かに立ち往生した。Angular4のFormGroupを元の状態にリセットするにはどうすればいいですか?
この場合、Plunkerスーパーヒーローを選択する必要があり、ヒーローのアドレスが表示されます。私は各アドレスのリセットボタンを追加しましたが、アドレスをリセットするためにクリックすると、すべてがリセットされます。
我々が持っている例では:
createForm() { //Set up form and array of addresses
this.heroForm = this.fb.group({
name: '',
secretLairs: this.fb.array([]),
power: '',
sidekick: ''
});
}
//Function to revert changes
revert() { this.ngOnChanges(); }
//This function will set the name from original object
ngOnChanges() {
this.heroForm.reset({
name: this.hero.name
});
//It will reload the form array with original values
this.setAddresses(this.hero.addresses);
}
//Create new formgroups and add to formArray
setAddresses(addresses: Address[]) {
const addressFGs = addresses.map(address => this.fb.group(address));
const addressFormArray = this.fb.array(addressFGs);
this.heroForm.setControl('secretLairs', addressFormArray);
}
これはokです、それは動作しますが、それはフォーム全体をリセットします。たとえば、Whirlwindには2つのアドレスがあります。新しいアドレスを追加した後、最初のアドレスに変更を加えます。私は間違いを犯して元の値を取得したい、リセットボタンをクリックすると、新しいアドレスが削除され、フォームのすべてのデータがリセットされます。
フォーム全体ではなく、アドレスごとにリセットするにはどうすればよいですか?
おかげ
も参照してください。私はあなたが達成したいことを理解しているかどうかはわかりません。例のようなユーザーストーリーはいかがですか?何が起こり、何が起こると思いますか? –
何かが見逃された場合はお詫び申し上げます。私が行った変更を取り消し、以前の値をロードしたい。たとえば、最初のアドレスがロードされ、そこに何か入力が始まります。リセットをクリックすると、フォーム全体ではなく、その特定のアドレスの元の値が表示されます。 – UncleFester