-
Posted by masashiyoshiwara on 2020-02-05T09:47:46.259Z 困っていること 環境 |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments
-
Beta Was this translation helpful? Give feedback.
-
Posted by d-oku on 2020-02-05T14:16:11.792Z <input name=“ここの名前が一意”>ということでしょうか? angular-fkuyfh - StackBlitzStarter project for Angular apps that exports to the Angular CLI |
Beta Was this translation helpful? Give feedback.
-
Posted by masashiyoshiwara on 2020-02-05T16:42:25.977Z akaiさん 1点気になることがあります。
|
Beta Was this translation helpful? Give feedback.
-
Posted by masashiyoshiwara on 2020-02-05T16:45:13.936Z d-okuさん |
Beta Was this translation helpful? Give feedback.
-
Posted by akai on 2020-02-05T18:44:51.051Z
そんなことはないはずと思って以下のコードで確認しましたが、そんなことありましたね。 stackblitz.comangular-yfvrag - StackBlitzStarter project for Angular apps that exports to the Angular CLI 親要素にform要素があるだけで、コントロール(NgModel)に よく考えたら 解答の方、少し修正しておきます。 |
Beta Was this translation helpful? Give feedback.
-
Posted by akai on 2020-02-05T19:04:07.809Z ところで、これまでの会話を踏まえて、 初期値がどちらもfooになっていますね。 stackblitz.comangular-ougwgt - StackBlitzStarter project for Angular apps that exports to the Angular CLI 変更した箇所は
と言ったものです。 再現方法はわからないのですが、リアクティブに入力が同期されてしまう不具合とかを出した記憶もあるので、 |
Beta Was this translation helpful? Give feedback.
-
Posted by d-oku on 2020-02-06T00:16:26.925Z あまりテンプレートエンジンを使っていない&nameを使わなかったので気づいてませんでした。 |
Beta Was this translation helpful? Give feedback.
Posted by akai on 2020-02-05T14:16:01.867Z
NgFormの値として利用したい場合は一意にすることが必須です。
nameはフォームの値をjsonにした時、
オブジェクトのキーとなることを考えれば全ての値が同じになってしまうような不具合が起こることは想像に難くないと思います。(記述によっては不具合が露見しない場合もあります)
同一のnameを利用したい理由によって対応は変わってきますが、以下のような手法が考えられるかと思います。
a)
[ngModelOptions]
を利用するinput要素に
[ngModelOptions]="{ standalone: true }"
を付与することで、NgForm内の値ではないことを明示的に示すことができます。
こうすることで、NgFormとコントロールのヒモ付が解除され、nameが持つAngular的な文脈も消滅します。
<form (ngSubmit)="f.value" #f="ngForm"> ...
のようなコードを書いていなければ有効でしょう。(f.valueに該当コントロールのvalueが入ってこなくなります)b) name値をユニークにする
例えばngForで項目を繰り返すことによってnameが重複する設計になっているような場合、
以下のような記述で問題は解決されるかと思います。