Задать вопрос
StivinKing
@StivinKing

Как правильно работать с datatable от Angular Material?

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

Кто уже опробовал datatable от angular material? Я хоть и посидел за ним немного, нашел хороший плюс, который заключается в том, что можно просто описать все колонки, а потом в просто вызвать только те, которые нужно и в любом порядке. Из минусов то, что не могу просто заставить это работать. Вечно получаю ошибку:
this.dataSource.connect is not a function
Суть в том, что данные приходят с backend в формате json (в примере данные, конечно же, "захардкожены")
Пример на Plunker
  • Вопрос задан
  • 909 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Таблица не совсем простая получается, мы обязаны передавать dataSource как объект типа DataSource из @angular/cdk

/**
   * Provides a stream containing the latest data array to render. Influenced by the table's
   * stream of view window (what rows are currently on screen).
   */
  @Input()
  get dataSource(): DataSource<T> { return this._dataSource; }


Вот вам следующий шаг

import { DataSource } from '@angular/cdk'
import { Observable } from 'rxjs/Observable'
import 'rxjs/add/observable/of'

export class MyDataSource extends DataSource<any> {
  connect(): Observable<any[]> {
    return Observable.of([
      {id: 1, title: 'Test 1'},
      {id: 2, title: 'Test 2'},
      {id: 3, title: 'Test 3'},
    ]);
  }

  disconnect() {}
}


public dataSource: DataSource = new MyDataSource();


https://plnkr.co/edit/I5gnn3XzosabC8lQCrEo?p=preview

Это как бы подталкивает нас не забрасывать изучать rxjs и познавать всю его силу. Далее идите в примеры на сайте https://material.angular.io/components/table/examples, там более продвинутая версия connect метода, где используется merge оператор
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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