Я довольно новыми для углового, и мне интересно, что я не хватает в этой ситуации:Машинопись: фильтр BehaviourSubjet asObservable
В службе создать BehaviorSubject
для хранения WebSocket события:
@Injectable()
export class GlobalEvent {
private _events: BehaviorSubject<IWSEvent[]> = new BehaviorSubject([]);
private socket;
constructor() {
this.socket = io(AppConfig.websocketClient);
this.socket.on('event', (data: IWSEvent) => {
const collection = this._events.value;
collection.push(data.msg.object);
this._events.next(collection);
});
}
list() {
return this._events.asObservable();
}
}
Тогда в другой службе я подписавшись на Observable
Я возвращаюсь:
@Injectable()
export class InstanceStore {
constructor(private instanceService: InstanceService, private globalEvent: GlobalEvent) {
this.globalEvent.list()
.filter((e) => {
return e.model === 'Instance';
})
.subscribe(
(data: IWSEvent[]) => {
const event = data[data.length - 1];
console.log(event, data);
}
);
}
}
Но я получаю сообщение об ошибке: Property 'model' does not exist on type 'IWSEvent[]'.
в функции фильтра, пока я ожидал найти единственный параметр IWSEvent
как параметр функции фильтра, а не массив.
Что я не понимаю?
Благодаря
Хорошо спасибо, я получил то, что мне не хватало. Вызов 'asObservable' Я ожидал получить только последний массив' IWSEvent [] ', в то время как я получаю массив' IWSEvent [] 'массивов, по одному для каждого последующего вызова. Это правильно? – teone