首页 > 解决方案 > 无法通过 BehaviorSubject 访问数据的属性。BehaviorSubject 上不存在属性

问题描述

在使用 BehaviourSubject 在我的应用程序中设置共享数据时,我无法访问数据的属性。出现错误:-

**

类型“BehaviourSubject”上不存在属性

**

共享服务.ts

setCommonData(data): void {
  this.commonData.next(data);
}
getCommonData(): Observable<BehaviorSubject<any>> {
  return this.commonData;
}

app.component.ts

// result = {id: number, name: string, info: {}}
getData(): void {
    this.dataService.getApi(url, {}, true).subscribe((result) => {
        this.sharedService.setCommonData(result);
    }
}

child.component.ts

displayData(): void {
    this.sharedService.getCommonData().subscribe((data) => {
         this.displatData = data // works
         this.info = data.info // property info does not exist on type 'BehaviourSubject<any>'
    });
}

标签: angularobservablebehaviorsubjectsubject

解决方案


您正在返回一个可观察的BehaviorSubject. 相反,您需要将 theBehaviorSubject 作为可观察对象返回。

尝试以下

setCommonData(data): void {
  this.commonData.next(data);
}

getCommonData(): Observable<any> {         // <-- return `Observable` here
  return this.commonData.asObservable();
}

推荐阅读