angular - 角度无法从其他组件获取数据
问题描述
我正在使用服务从另一个组件获取数据。这工作正常,但如果我尝试执行以下操作,我会收到错误:
<span>{{dataset.name}}</span>
这是我的构造函数(日志工作正常)
this.clientService.observable.subscribe(data => {
console.log(data.name);
this.dataset = data;
});
这是我得到的错误:
core.js:5828 错误类型错误:无法读取未定义的属性“名称”
这是我的服务:
export class ClientService {
locationsObject: Subject<any> = new Subject<any>();
observable: Observable<any> = this.locationsObject.asObservable();
constructor() { }
}
这是我设置数据的方式:
this.clientService.locationsObject.next(location);
解决方案
当表达式尝试访问属性dataset
时,未定义变量(因为它是异步分配的) 。在尝试访问它的属性之前,name
您可以使用安全导航运算符检查变量是否已定义。?.
尝试以下
<span>{{ dataset?.name }}</span>
或者,您可以在尝试访问它的属性之前检查使用*ngIf
指令是否定义了变量。dataset
<ng-container *ngIf="dataset">
<span>{{ dataset.name }}</span>
</ng-container>
推荐阅读
- python - 如何使用一些规则将一些纯文本输出转换为 JSON?
- elasticsearch - 弹性转储失败,java script out pf memory
- python - 无法从 Anaconda Navigator 启动 Spyder
- java - 如何在 Java 8 中干净地执行具有异步超时的任务
- c++ - cmake + clang_tidy - 禁用签入目录
- javascript - onclick 内的多个 var:Strings 和 Int
- mysql - SQL 搜索两列并替换第三列
- scala - Bundle 的 Vec 作为 Module 参数
- php - 在mysql中插入来自CSV的10000行数据而不跳过任何行
- javascript - 在渲染方法中访问构造函数变量 - Reactjs