且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

可观察类型错误:无法读取未定义的属性

更新时间:2022-10-29 17:13:39

下次请包括您的视图和模型(app/about/about.html 和 about.model).

如果您返回一个数组,您可以使用asyncPipe,它订阅 Observable 或 Promise 并返回它发出的最新值.当发出新值时,异步管道标记要检查更改的组件"因此视图将使用新值更新.

如果您要返回原始类型(字符串、数字、布尔值),您还可以使用 asyncPipe.

如果您要返回一个对象我不知道有什么方法可以使用 asyncPipe,我们可以将异步管道与 安全导航运算符 ?. 如下:

{{(objectData$ | async)?.name}}

但这看起来有点复杂,我们必须为我们想要显示的每个对象属性重复这一点.

正如评论中提到的@pixelbits,您可以subscribe() 到控制器中的可观察对象并将包含的对象存储到组件属性中.然后在模板中使用安全导航操作符或 NgIf:

service.ts

import {Injectable} from 'angular2/core';从 'angular2/http' 导入 {Http};导入 'rxjs/add/operator/map';//我们现在需要导入它@Injectable()导出类 MyService {构造函数(私有 _http:Http){}获取数组数据(){返回 this._http.get('./data/array.json').map(data => data.json());}getPrimitiveData() {返回 this._http.get('./data/primitive.txt').map(data => data.text());//注意这里的 .text()}获取对象数据(){返回 this._http.get('./data/object.json').map(data => data.json());}}

app.ts

@Component({选择器:'我的应用',模板:`<div>数组数据使用'|异步':<div *ngFor="let item of arrayData$ | async">{{item}}</div>