StivinKing
@StivinKing

Как правильно обработать массив объектов для md-table в общем компоненте?

Доброго времени суток,

Как известно для Angular вышел datatable material design. Но так как он составной (нужно писать сортировки, фильтры и прочее), делаю общий компонент, дабы один раз все это прописать ну и про плюшки конечно же не забыть.
Но никак не могу разобраться с передачей данных в сам md-table. Пример на Plunker
То есть, допустим, в основном компоненте я принял с backend данные, обработал и дальше передаю в общий компонент MdTableComponent. И вот тут загвоздка.
Во-первых, данные захардкожены. А нужно сделать запрос на back, получить данные, обработать их и только потом отправить на построение таблицы.
Во-вторых, получается два класса в основном компоненте, а это значит, что пока идет запрос я не могу передавать какие-то параметры, к примеру включение прелоадера или другое

...Прошу прощения, не ту ссылку на Plunker дал. Обновил
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
0X12eb
@0X12eb
Вам поможет определение своего кастомного DataSource, наследуемого от типизированного из '@angular/cdk'
В дальнейшем посоветовал бы сделать его один раз генерик с общими параметрами для Вас (будь то сортировка, фильтрация или другими постпроцессорами)

export class CustomDataSource extends DataSource<T> {

  constructor(
      private _customService: CustomService, 
      private _paginator: MdPaginator) { }

  connect(): Observable<T[]> {
    const displayDataChanges = [
      this._customService.getAllObjects(),
      this._paginator.page
    ];

    return Observable.merge(...displayDataChanges).map((data, page) => {
      const clonedData = data.slice();

      const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
      return data.splice(startIndex, this._paginator.pageSize);
    })
  }

  disconnect() {}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы