首页 > 解决方案 > 从 Observable 转移到 BehaviorSubject

问题描述

我有和可观察的和它的条件:

let data$: Observable<DataModel[]>;

this.httpClient.get<DataModel[]>>(`data`)
   .pipe(map((result: DataModel[]>) => this.data$ = result));

let result: boolean = this.data$.pipe(
  map(x => x.find(y => y.child.some(z => z.id == id))),
  map(x => x ? ['B'].some(y => y === x.child.find(z => z.id == 2)) : false));

我现在data$Observable<DataModel[]>to改变BehaviorSubject<DataModel[]>并习惯于this.data$.next(result)设置data$值。

let data$: BehaviorSubject<DataModel[]>;

this.httpClient.get<DataModel[]>>(`data`)
   .pipe(map((result: DataModel[]>) => this.data$.next(result));

let result: boolean = this.data$.pipe(
  map(x => x.find(y => y.child.some(z => z.id == id))),
  map(x => x ? ['B'].some(y => y === x.child.find(z => z.id == 2)) : false));

使用 BehaviorSubject 时出现错误this.data$.pipe(

 undefined is not an object (evaluating 'this.data$.pipe')

我错过了什么?

标签: angularrxjsangular8angular-observable

解决方案


你应该初始化你的BehaviorSubject

let data$ = new BehaviorSubject<DataModel[]>(INITIAL_VALUE or undefined);

推荐阅读