2017-09-15 14 views
0

私は自分のコンポーネントのp-dialog内にp-datatableを表示しています。ユーザーが以前にこの表から少数の行を選択した場合、次回p-dialogを訪れたときに選択して表示する必要があります。primeng:バインディングの選択プロパティが非同期的にDatatableでない

選択した項目の配列をp-datatableのselectionプロパティに渡しています。ただし、行は画面上で選択されて表示されません。私は同じ行を再度選択した場合は

、私は事前に選択された行が正しくselectionプロパティに保持何とかhtmlにバインドされていないことselectionプロパティ、二度それらを得ます。

*ngIfでp-dialog全体をラップしようとしましたが、データが受信された後にのみ作成されることを期待しても違いはありません。

選択した行をp-datatableにバインドするにはどうすればよいですか。

<div *ngIf="data && data.length" class="col-sm-12"> 
    <p-dataTable #ListRef [value]="data" rowHover="true" [multiSortMeta]="multiSortMeta" (onRowSelect)="onSelect($event)" [(selection)]="selectedData" (onRowUnselect)="onUnSelect($event)"> 
     <p-column field="launchDate" header="Launch Date" [sortable]="true"></p-column> 
     <p-column field="endDate" header="End Date" [sortable]="true"></p-column> 
    </p-dataTable> 
    </div> 

IはまたViewChildを使用して参照をフェッチし、そこselectionプロパティに値を代入しようとしています。それも違いはありませんでした。

私はngOnInitの方法で既にdataselectedDataが利用可能な場合、問題は発生しないことに気付きました。

アイデア?

+0

選択した項目の配列を選択プロパティ 'selectedData'にどのように渡していますか?割り当て後にビューが更新されない可能性があります。プッシュの代わりにスプレッド演算子を使ってみることをお勧めします。 – TimeTraveler

+0

私は配列を 'selection'プロパティに代入します。 –

答えて

0

私は最初にそれを見逃しましたが、後で、選択された行を合計行と比較するために割り当てることができるdataKeyというプロパティがあることが判明しました。これは私のために働いた。唯一の変化は一意

<p-dataTable #fundListRef [value]="data" rowHover="true" [(selection)]="selectedData" (onRowSelect)="onFundSelect($event)" (onRowUnselect)="onFundUnSelect($event)" 
     dataKey="id"> 

P-DataTableのドキュメントは、それが何らかの形で私の場合のために働いていませんでしたマップの比較を使用していることを述べている行を一致させるために、フィールド名を割り当てることでした。

関連する問題