私のHTMLページにリストがあります。このリストは、ng-optionsを使用して配列から取得します。オブジェクト配列のプロパティの1つはshowです。 ng-optionsはフィルタを使用して、show == 1のオプションのみを表示します。ユーザーがボタンを押すと、リスト内の選択項目が配列に追加され、show値を0に設定する必要があります。リスト。値は0に設定されていますが、ng-optionsはselectのオプションを間違って表示しています。配列の値を更新するときに文字列に変更
アレイ定義は
referenceTypes: Array<any> = [
{ label: 'Customer Reference', show: 1 },
{ label: 'PO Number', show: 1 },
{ label: 'SO Number', show: 1 }
]
ボタンをクリックし
addReferenceType =() => {
...
// hide the reference type from the add drop down list
this.referenceTypes.filter(option => option.label == this.referenceType)[0].show = 0;
}
HTML
<select ng-model='$ctrl.referenceType'
ng-options="option.label as option.label for option in $ctrl.referenceTypes | filter: {show: 1}">
<option value=""></option>
</select>
こんにちは、あなたのコードを試してみましたが、正しく動作しているようです。 問題を再現できるように実際の例を作成できますか。以下のリンクを確認してください [jsfiddleで試したサンプル](https://jsfiddle.net/25z9ck4n/2) –
@KRISHNAPATELあなたが作成したjsfiddleには、選択をクリックすると次のエラーが表示されます。 undefined' – quirimmo
@KRISHNAPATELこのようにコードを変更する必要があります。そうでない場合、 'filter'が空の配列を返し、' click'が2回トリガされるため、そのエラーが発生します。 'addReferenceType(){ let filteredTypes:Array = this.referenceTypes.filter(オプション=> option.label == this.referenceType); if(filteredTypes.length> 0){ filteredTypes [0] .show = 0; } } –
quirimmo