SelectionModel материал Таблица, выберите свойство столбца - PullRequest
0 голосов
/ 22 января 2020

У меня есть <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 без полного объекта

...