合并观测值时,不会得到第二个观测值。

问题描述 投票:0回答:1

我有一个小问题,这个代码。

import { Injectable } from '@angular/core';
import { BehaviorSubject, Subject, merge } from 'rxjs';
import { scan, map } from 'rxjs/operators';
import { boatsList } from 'src/app/shared/mocks/boats.mock';
import { CatamaranModel } from 'src/app/shared/models/catamaran.model';
import { SailBoatModel } from 'src/app/shared/models/sail-boat.model';

@Injectable({
  providedIn: 'root'
})

export class BoatListService {

  private boatListInitSubject: BehaviorSubject<(CatamaranModel|SailBoatModel)[]> = new BehaviorSubject(boatsList);
  boatListInit$ = this.boatListInitSubject.asObservable();

  private addedBoatSubject: Subject<(CatamaranModel|SailBoatModel)> = new Subject();
  addedBoat$ = this.addedBoatSubject.asObservable();

  boatList$ = merge(
    this.boatListInit$,
    this.addedBoat$
  )
    .pipe(
      scan((acc: (CatamaranModel|SailBoatModel)[], value: CatamaranModel|SailBoatModel) => [...acc, value])
    );

  constructor() {
  }

  addBoat(boat: CatamaranModel | SailBoatModel){
    this.addedBoatSubject.next(boat);
  }
}

SailBoatModel)> = new Subject();

 boatList$ = merge(
    this.boatListInit$,
    this.addedBoat$
  )
    .pipe(
      scan((acc: (CatamaranModel|SailBoatModel)[], value: CatamaranModel|SailBoatModel) => [...acc, value])
    );

to

private addedBoatSubject: BehaviourSubject<(CatamaranModel

我使用这个合并功能将一个新的对象添加到我的集合中,但是addedBoat$中的对象从来没有被添加到列表中,我不知道为什么.当我做地图而不是扫描时,我找不到this.addedBoat$的结果。

如果我订阅了this.addedBoat$,然后启动addBoat函数,我就有了好的对象。
angular merge observable rxjs6
1个回答
0
投票

我在这段代码中遇到了一个小问题:从'@angularcore'导入{ Injectable };从'rxjs'导入{ BehaviorSubject, Subject, merge };从'rxjsoperators'导入{ scan, map };导入{ ...

试着改变这一行

Private addedBoatSubject: Subject<(双体船模型)

© www.soinside.com 2019 - 2024. All rights reserved.