Если я пытаюсь использовать RxJS операторы, такие как .Снять, Пропустите и т.д. на FireBaseListObservable, я получаю «взять не является функцией» ошибка:Как использовать .take в FirebaseListObservable?
import {Component} from '@angular/core';
import {AngularFire, FirebaseListObservable} from 'angularfire2';
import {Observable} from 'rxjs';
export class AppComponent {
items: FirebaseListObservable<any>;
constructor(public af: AngularFire) {
// this works
Observable.interval(1000).take(5).subscribe(x => console.log(x));
this.items = af.database.list('/items');
// this does not
this.items.take(1).subscribe();
}
}
Edit: импортирующие .Снять через импорт «rxjs/добавить/оператор/принять "; сделали работу, хотя теперь у меня есть еще один вопрос:
Почему
Observable.interval(1000).take(5).subscribe(x => console.log(x));
работает даже без импортируемого взять?
И как я могу отнести наблюдаемый к FirebaseListObservable?
Можете ли вы включить выражение 'import', которое вы использовали для' Observable'? – cartant
Я обновил ответ с помощью примера (и по той причине, о которой я упоминал). При использовании 'import {Observable} из 'rxjs';' вы импортировали RxJs целиком. У меня нет объяснений, почему это не приведет к тому, что '' '(и все остальные операторы) будут доступны на наблюдаемых AngularFire2. Это тайна.Чтобы дойти до сути, вам нужно будет включить все операторы и версии 'import' и т. Д. Если я использую этот импорт, я получаю все операторы. – cartant
@cartant: весь импорт включен сейчас –