将元素添加到Observable <object []>变量

时间:2019-02-19 18:19:51

标签: angular rxjs observable

我正在尝试以可观察的方式将元素添加到列表中,当我调用.pipe(map ...时,它会迭代两次,然后添加元素两次。

可观察的列表:

profesionales$: Observable<Profesional[]>;

添加元素的功能

 this.profesionales$ = this.profesionales$.pipe(map(profesionales => {
     return [...profesionales, profesional];
 }));

[... profesionales,profesional]中的最后一个'profesional'是要添加到列表中的元素。

谢谢。

2 个答案:

答案 0 :(得分:0)

我建议不要对其使用Observable,而应使用BehaviorSubject并按如下方式使用它:

profesionales$: BehaviorSubject<Profesional[]> = new BehaviorSubject<Profesional[]>([]);

然后添加一个元素:

this.profesionales$.next([...this.profesionales$.getValue(), newProfesional])

答案 1 :(得分:0)

您可以使用rxjs .mergeMapof添加到可观察对象。

let profesional = { id: 1, name: "some example profesional" };

this.profesionales$ = this.http
    .get<Profesional[]>("some_url")
    .pipe(mergeMap(v => of(v.concat(profesional));

注意:我以http调用为例,可观察到,因为我不确定您的实现。这也很有用-> learn rxjs docs