Таблица не совсем простая получается, мы обязаны передавать 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 оператор