首页 > 解决方案 > 角度无法从其他组件获取数据

问题描述

我正在使用服务从另一个组件获取数据。这工作正常,但如果我尝试执行以下操作,我会收到错误:

      <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);

标签: angular

解决方案


当表达式尝试访问属性dataset时,未定义变量(因为它是异步分配的) 。在尝试访问它的属性之前,name您可以使用安全导航运算符检查变量是否已定义。?.尝试以下

<span>{{ dataset?.name }}</span>

或者,您可以在尝试访问它的属性之前检查使用*ngIf指令是否定义了变量。dataset

<ng-container *ngIf="dataset">
  <span>{{ dataset.name }}</span>
</ng-container>

推荐阅读