angular - 无法通过 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>'
});
}
解决方案
您正在返回一个可观察的BehaviorSubject
. 相反,您需要将 theBehaviorSubject
作为可观察对象返回。
尝试以下
setCommonData(data): void {
this.commonData.next(data);
}
getCommonData(): Observable<any> { // <-- return `Observable` here
return this.commonData.asObservable();
}
推荐阅读
- java - Jackson - 将 JSON 反序列化为类
- javascript - 在 react Native 中使用外部 API 呈现 Flatlist 的正确方法
- python - 熊猫在列表中正确的值
- java - 为 netbeans 8.2 运行 SQL 时出现词法错误
- regex - 通过在现有列上执行正则表达式来创建新列
- python - 如何将可变长度参数传递给另一个函数的参数?
- ada - Ada 202x 提案@限制理由?
- python - Python:无法在excel中格式化输出数据透视表的行
- java - Spring MVC - 尽管用户名和密码正确,但仍将我重定向到我的登录失败映射
- php - 由于连字符,pq_query 语法错误。我怎么写这个?