問題タブ [formarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1316 参照

angular - Angular でリアクティブ動的フォームに追加データを渡す方法

formControl編集可能 (オブジェクトになります) と読み取り専用データ (HTML 上の静的テキストになります)を組み合わせた配列があります。Angularでそれを行う方法はありますか? と を使用FormArraysFormGroupsてこの静的テキストを追加することもできますが、それは間違っているように感じます。例を挙げて問題を詳しく説明しましょう。

たとえば、次のような JSON オブジェクトがあるとします。

項目のフィールドには FormArrays を使用quantityします。

ただし、タイトルは編集可能な項目ではありません。にデータを追加する最良の方法は何FormGroupですか?

itemsそれ以外の場合は、この追加の編集不可能なデータを管理するために呼び出される別の配列を作成する必要があります。そのため、item のフィールドを 2 つの個別のオブジェクトに分割できます。1) staticDataForItems, 2) editableDataForItems.

これは私が好まない解決策です。私のユースケースでは、配列にアイテムを追加したり、配列から「アイテム」を削除したりできるためです。formArray将来性のない2 つの配列 (items と ) を扱いたくありません。

読み取り専用 (読み取り専用 HTML 要素) と編集可能なデータ (入力 HTML 要素) データの組み合わせがある場合、これら 2 つの配列を 1 つの配列に結合するにはどうすればよいですか。

フォーム検証の恩恵を受けたいし、良い方法でデータを追加したいと思っています。

以下に実際の例を示します。

https://stackblitz.com/edit/angular-gw1c6d?file=app%2Fapp.component.ts

ありがとう。

0 投票する
1 に答える
3166 参照

javascript - angular 4ネストされたformArrayパスでコントロールが見つかりません: 'segmentRows3 -> 1 -> segmentId3'

配列にプッシュできません。1人または複数の人(役割、情報)を持つことができるセグメント(ID、時間)があります。フィールドは動的に生成されます。ロードすると、ページにフィールドが表示されます (下の画像を参照)。
ここに画像の説明を入力

セグメントを追加しようとすると、エラーが発生ERROR TypeError: Cannot find control with path: 'segmentRows3 -> 1 -> segmentId3'
します: .ts ファイルのコードは次のとおりです。

.html コード

追加しようとすると、ロード時とは異なり(下の画像)、セグメント(ID、時間)は追加されますが、人(役割、情報)は追加されず、エラーがスローされます:ERROR TypeError: Cannot find control with path: 'segmentRows3 -> 1 -> segmentId3' . なんで?

ここに画像の説明を入力