Angular 2 アプリケーションで PrimeNG データ テーブルを使用していますが、ルート変更時に選択を保持する必要があります。現在、アプリの状態を次のように設定しています。
onTableRowStateChange() {
this.appState.set('selectedApplicants', this.selectedApplicants);
}
appState は、選択状態を保存するサービスです。これは、選択時に開くいくつかのタブを永続化するためにも使用されます。
appState が正しく設定され、選択された応募者の配列が返され、開いているタブが保持されますが、データ テーブル内の実際の選択は保持されないため、エントリを再度選択できます。
HTML は次のようになります。
<p-dataTable tableStyleClass="table" [value]="applicants"
[(selection)]="selectedApplicants"
(onRowSelect)="onTableRowStateChange()"
(onRowUnselect)="onTableRowStateChange();">
<header>Applications</header>
<p-column [style]="{'width':'38px'}" selectionMode="multiple"></p-column>
<p-column *ngFor="let col of cols" [field]="col.field" [header]="col.header"></p-column>
</p-dataTable>
コンストラクターで `ngOnInit 中に配列this.appState.get('selectedApplicants')
を取得するメソッドを使用して、次のように設定しようとしました。selectedApplicants
selectedApplicants:any[] = ( this.appState.get('selectedApplicants').length > 0 ) ? this.appState.get('selectedApplicants') : this.appState.set('selectedApplicants', []);
コンポーネントで。
ただし、選択された応募者の配列は返されますが、テーブル自体では選択されません。
補足として、this.selectedApplicants.splice(event.index, 1);
タブを閉じるとテーブルエントリの選択が解除されるため、選択されたエントリの配列を変更することで、プログラムで選択を変更することができます。必要な配列が存在する場合でも、ルート変更後にビューを開始すると、エントリが自動的に選択されません。
ルート変更時にデータ テーブルの選択を保持するための回避策または方法はありますか?