2017-12-29 17 views
1

私はpドロップダウンでprimatibleを持っています.pドロップダウンからアイテムを選択し、それをonChangeイベントでpデータテーブル(最初は空です)に追加すると、ngForそれはp-datatableではなく、私は何を変えるべきですか?おかげでAngular 2を使用して、選択したpドロップダウンアイテムをprimeng p-datatableリストに追加するにはどうすればよいですか?

PS。テンプレートで

  ... 
    public existencias: Existencia[] = []; 
    public ex_pd: Existencia[] = []; 
    public medicamentos: SelectItem[]; 
       ... 
    private getAllExistencias() { 
      this.existenciaService 
       .getAllExistencias() 
       .subscribe(
       data => { 
        this.existencias = data; 
        this.medicamentos = []; 
        for (let i = 0; i < this.existencias.length; i++) 
        { 
         this.medicamentos.push({ label: this.existencias[i].medicamento.nombre , value: this.existencias[i].medicamento.nombre }); 
        } 
       }, 
       error => console.log(error), 
       () => console.log('Complete') 
       ); 
     } 

public addMedicamento(medic: string) {// 

     let e = this.existencias.filter(e => e.medicamento.nombre == medic); 
     this.ex_pd.push(e[0]); 
    } 

それが動作します。この方法:私はコンポーネントでは、角2

を使用してい

<tr *ngFor="let pd of ex_pd; let i = index"> 

が、このように何もPに示されていません - データ:

答えて

0

"immutable"プロパティがfalseに設定されていることを確認してください。このプロパティはデフォルトでtrueに設定されており、あなたが話しているのと同様のエラーが表示されます。

<p-dataTable [immutable]="false" ...> 

https://www.primefaces.org/primeng/#/datatable

+0

はい、問題ありました。ありがとうございます! – user3307817

+0

@ user3307817他の人が簡単に見つけられるように、これを返信してupvoteとしてマークしてください!ありがとうございました :) –

0

はい、彼はそれが正しいのですが、おそらく最良の方法は不変の原則に従うことです言いました!

つまり、アレイ/オブジェクトを常に再作成する必要があります。どのように簡単にそれを行うには?

//use spread operator 
newArr = [...oldArr]; 

//use Object.Assign 
newArr = Object.assign([], oldArr) 
関連する問題