我正在从 firebase 服务器分块接收数据,同时渲染该数据需要一个库,该库坚持 observable 包含数组。我无法将新数据 block 推送到 observable 包含的现有数据 block 数组,
从数据服务我通过主题的下一个调用并尝试添加一个新的 calEvent
this.homeWorkerService.eventSubject.next(calEvent);
在组件中,我有以下代码
events$: Observable<Array<CalendarEvent<any>>>;
和 ngOnInit,我正在向它提供数据
this.events$ = this.service.eventSubject.asObservable();
您能否建议我可以向已保存我的事件的可观察对象添加新事件的任何方法。
PS:我正在使用 this lib 来渲染日历并使用 remoteDB 来渲染事件。
谢谢,
最佳答案
这里的主题是一个 CalendarEvent 数组,你必须在 next() 方法中传递一个 CalendarEvent 数组。我建议在您的案例中使用 BehaviorSubject。这是一个简短的例子:
import { Component } from '@angular/core';
import { Observable, BehaviorSubject, of } from 'rxjs';
import { take } from 'rxjs/operators';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
obsArray: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);
array$: Observable<any> = this.obsArray.asObservable();
constructor() {
}
ngOnInit() {
this.addElementToObservableArray('It works');
}
addElementToObservableArray(item) {
this.array$.pipe(take(1)).subscribe(val => {
console.log(val)
const newArr = [...val, item];
this.obsArray.next(newArr);
})
}
}
你可以在这里看到一个活生生的例子:Stackblitz .
希望对您有所帮助!
关于 Angular 6 + RxJS 6.0 : How to push new element to array contained by Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856647/