Skip to content

inputタグname属性の制約について #13

Answered by lacolaco
lacolaco asked this question in Questions
Discussion options

You must be logged in to vote

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が重複する設計になっているような場合、
以下のような記述で問題は解決されるかと思います。

<input type="text" name="value_{{ i }}" [(ngModel)]="item.value" *ngFor="let item of items; index…

Replies: 7 comments

Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Answer selected by lacolaco
Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Comment options

lacolaco
Jan 3, 2023
Maintainer Author

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
archive 旧フォーラムのアーカイブから転記したスレッドです
1 participant