これまで設定していたかなり複雑なフォームがあります。私はここまで下がり、問題に遭遇しています。Angular2反応性フォームモデルバインディング - マルチセレクトで更新が反映されない
ng-select
というマルチセレクションプラグインを使用しています。このディレクティブは、2つのデータ配列[items]
と[active]
を取ります。項目は可能なオプションのリストであり、アクティブなのはデフォルトで選択された値です。
私はこれを私の反応形式モデルで構成しようとしています。ここで
<span>
<ng-select formControlName="AttributeValue" [allowClear]="true" [multiple]="true" [items]="fetchSourceList()" [active]="formatValues(ruleAttributeData.AttributeValue)" placeholder="Click to Select a Value" class="inlineSelect"></ng-select>
</span>
は私のフォームは、これまでにどのように見えるかの画像です:
下部に見array
は、フォームを作成するときに、私のモデルが含まれているものです。それらは選択された値です。
active
(デフォルト選択)を移入するために使用される方法は、次のようになります。
export interface ValueData {
RuleDetailID?: number;
AttrValue: string;
Value: string;
IsValueRetired: boolean;
}
private formatValues(data) {
return data.map((data: ValueData) => {
return { id: data.AttrValue, text: data.Value };
});
}
私fetchSourceList()
方法はただから選択することが可能に項目の配列を返します。新しいオプションを選択するためにドロップダウンを呼び出すと、すでに選択されているオプションは表示されませんが、これは良いことです。
これまでのところ、ページが正常に読み込まれ、デフォルトの選択された項目がUIで選択済みとしてマークされ、form
の値は8項目を示しています期待どおりに配列内にあります。私[items]="fetchSourceList()"
が入力に追加していないオプションを選んで、まだ選択されていないthatsのデータのリストが含まれていますが、ここで
は問題が
...来ます。
使用可能なオプションから入力を選択すると、選択入力に追加が表示されません。フォームの値を取得すると、アイテムが選択されたアイテムの配列にキャッチで追加されたことがわかります。リストからオプションを選択し続けると、最後に選択したもの私の配列の8。
第2に、このマルチ選択からアイテムを削除すると、削除されません。
ここでは、モデルの問題の一部が予想通りに機能しないように見えます。
私は間違っていることを際立たせていますか?
これについてはわかりませんが、formatValues()メソッドが実際に動作しているかどうかを確認できますか?それはプライベートメソッドとして定義されており、DOMからアクセスしようとしています。 –
@priteshagrawal - これは機能しており、確認済みです。 'ruleAttributeData.AttributeValue'は、マルチ選択のために特別にフォーマットするためにインターフェースを通過するオブジェクトです。データは、 'text'と' id'キーを持つオブジェクトの配列としてフォーマットする必要があります。この場合、メソッドが動作しなかった場合、それらは 'undefined'と表示されます。 – SBB
@priteshagrawalしかし、このメソッドを複数回呼び出すようですが、配列値ごとに1つずつ表示されます。配列に10個のオプションを指定すると、 'formatValues'メソッドが10回呼び出されます。奇妙に思えます... – SBB