У меня есть FirebaseListObservable и BehaviorSubject, прослушивающие входной фильтр.
Теперь я хочу объединить обоих парней и вернуть массив, отфильтрованный со значением из ввода, чтобы передать md-таблицу.
Я получил пример из https://material.angular.io/components/table/examples а> таблица фильтрации.
Может кто-нибудь помочь мне? Спасибо.
Изменить:
Теперь это работает, но я получаю сообщение об ошибке при загрузке компонента. После того, как я пишу что-то в поле ввода, начинает нормально работать.
ОШИБКА TypeError: вы предоставили «неопределенное» там, где ожидался поток. Вы можете предоставить Observable, Promise, Array или Iterable.
Что я делаю не так?
export class DataSourcePessoas extends DataSource<any> {
pessoas: FirebaseListObservable<any[]>;
_filterChange = new BehaviorSubject('');
get filter(): string { return this._filterChange.value; }
set filter(filter: string) { this._filterChange.next(filter); }
dados: any[] = [];
constructor(private pessoasService: FirebasePessoasService) {
super();
}
connect(): Observable<any> {
const displayDataChanges = [
this.pessoas,
this._filterChange,
];
this.pessoas = this.pessoasService.BuscarPessoas();
this.pessoas.subscribe(items => {console.log(items); this.dados = items});
return Observable.merge(...displayDataChanges).map(() => {
return this.dados.filter(valor => {
return valor.nome.toLowerCase().indexOf(this.filter.toLowerCase()) !== -1})});
}
disconnect() {}
}