2017-09-15 9 views
1

誰かがこれを調べることができますか?私は、ボタンのクリック時にオブジェクトにデータを格納する必要があります。それはビューに表示される必要があります。再び、ユーザがドロップダウンボックス内の他の値を選択してテキストボックスにデータを入力すると、ボタンの上で、 を再度クリックすると、以前に保存された値をクリアすることなく同じオブジェクトにデータを保存する必要があります。ボタンをクリックして前の値を消去せずに配列に値を格納する問題

今、私はオブジェクトにvaueを保存して表示することができます。しかし、私が持っている問題は、それはボタンクリックで同じ値を2回保存していることです。別の値を選択した場合、以前の値は新しい値 で上書きされますが、アレイサイズはクリアされずに増加しています。

誰かが私がどこに間違っているか教えていただけますか?

ここは自分のHTMLファイルです。ここ

<md-select [placeholder]="result" [(ngModel)]="selectedItemType"> 
    <md-option *ngFor='let attr of result' [value]="attr.fieldType" ng-selected="attr.fieldType"> {{attr.attribute}} 
    </md-option> 
    </md-select> 
    </div> 
    <div *ngIf="selectedItemType =='string' || selectedItemType =='decimal' || selectedItemType == 'text' || selectedItemType == 'integer'"> 
    <input placeholder="Enter Text" type="text" class="input" [(ngModel)]="txtEntered"> 
    </div> 
<button *ngIf="selectedItemType" md-raised-button (click)= "Add()" color="accent" >Add</button> 
    <span *ngFor='let selVal of finalValues'> {{selVal.attributeName}} {{selVal.value}} 
    </span> 

私typescriptですクラスは、ここで

export class test{ 
Add() { 
    this.addToList(); 
    } 

addToList() { 
    this.addValues.push(this.selectedItemType, this.txtEntered); 
    this.finalValues = this.addValues.map(({attributeName, value}) => 
    new SelectedList(this.selectedItemType, this.txtEntered)); 
} 
} 

である私のモデルクラスは

export class SelectedList { 
    constructor(
     public attributeName: any, 
     public value: any 
    ) {} 
} 

答えて

1

であるあなたはaddToList()に代わり、このようなpushにもしかして?あなたは、角2以上の王国にある場合

this.addValues.push({ attributeName: this.selectedItemType, value: this.txtEntered }); 
this.finalValues = this.addValues.map((mapElem: {attributeName, value}) => 
new SelectedList(mapElem['attributeName'], mapElem['value'])); 

また、私はng-selectedの利用が有効であるとは思いません。代わりにselectedを使用する必要があります(動的に割り当てる場合は[selected])。

+0

私はselectedItemTypeとtxtEnteredの値をオブジェクトに代入しようとしていました。私が必要とするのは、ユーザーがボタンをクリックする度にこれらの値を保存する必要があるということです。次に、いくつかのリストを使用してUIにvaueを表示する必要があります。ユーザーが別の値を選択してボタンを再度クリックすると、以前の値を削除せずに新しい値を追加することができます。 – user2083386

+0

私の答えを更新しました。それがあなたが探しているものに近いものかどうかを見てください。 – amal

+0

すごいよ!それはうまくいった。ありがとう – user2083386

0

amalには完全に機能する回答があるようですので、間違いなくそれを行えます。また、あなたは間違いなく完全this.addValuesをスキップすることができますようにそれは感じているのに何を終わりにしたいことはplunkから該当するコードArray<SelectedList>

であるため、基本的に彼は、指摘されたん何here's a working plunk

Add() { 
    this.addToList(); 
} 

addToList() { 
    this.finalValues.push(new SelectedList(this.selectedItemType, this.txtEntered)); 
} 
関連する問題