У меня есть <mat-Table>
, и я использую SelectionModel
как этот пример:
Здесь
Проблема в том, что в этом примере данные сохраняются c, но в моем случае использования я обращаюсь к данным из хранилища NGRX, и я хотел бы предварительно выбрать элемент в списке на основе идентификатора их свойства:
В моем случае у меня есть этот код:
selection = new SelectionModel<IModel>(true, []);
models$: Observable<Array<IModel>>;
constructor(
private store$: Store<RootStoreState.IAppState>,
private dialogRef: MatDialogRef<ModelSelectorPopupComponent>) {
this.models$ = this.store$.select(ModelsStoreSelectors.selectAll);
this.store$.select(ModelsStoreSelectors.selectedModelsId).pipe(take(1)).subscribe(selectedModelsId => {
selectedModelsId.forEach(modelId => this.selection.select(selectedModelsId))
});
}
и моя таблица нарисована так:
<mat-table [dataSource]="(models$ | async)" class="mat-elevation-z8">
Итак, я бы хотел выбрать элемент таблицы на основе их идентификатора. Но я бы хотел избежать подписки на мой селектор моделей, а затем на мой селектор selectedModel, чтобы получить объекты.
Я не знаю, достаточно ли ясно, но вопрос прост.
Можно ли использовать SelectionModel
со свойством объекта в таблице?
РЕДАКТИРОВАТЬ:
Например, я не хочу делать это:
forkJoin(
this.store$.select(ModelsStoreSelectors.selectAll),
this.store$.select(ModelsStoreSelectors.selectedModelsId)
).pipe(take(1)).subscribe(([models, selectedModelsId]) => {
selectedModelsId.forEach(modelId => {
const model = models.find(model => model.id === modelId)
if (model) {
this.selection.select(model);
}
});
});
Я хочу иметь возможность выбирать по Id без полного объекта