我有一个有角度的应用程序,其组件名为“详细信息”。
在detail.component.ts中,我从API提取数据并将其填充到一个数组中,然后过滤该数组中的某个项目并将其放入另一个数组中。这是缩短的代码:
import { HttpClient } from '@angular/common/http';
//code
public data: any = []
public item: any = []
//code
constructor(public http: HttpClient) { }
getData()
{
const url ='myUrl'
this.http.get(url).subscribe(data => {this.data = data; this.item=this.data.find(/*my search*/)})
}
//code
ngOnInit()
{
this.getData()
}
然后,使用文件“ detail.component.html”显示所选商品的属性,如下所示:
<div><span>Name: </span>{{item.name}}</div>
这有效,显示项目属性。 问题是,在控制台中会出现很多错误消息。他们是这样的:
无法读取Object.eval上未定义的属性“名称”(作为updateRenderer)
似乎在完成getData()函数并填充数组之前,它试图呈现和显示item.name。
您是否知道如何解决此问题,以便控制台中不再显示错误消息?
答案 0 :(得分:6)
只需使用此
<div><span>Name: </span>{{item?.name}}</div>
OR
<div *ngIf="item"><span>Name: </span>{{item.name}}</div>
答案 1 :(得分:1)
尝试在用户界面中显示支票之前先添加支票。
<div *ngIf="item"><span>Name: </span>{{item.name}}</div>
因此,item.name
直到item
中有值时才被评估。
答案 2 :(得分:1)
由于错误是不言自明的,因此它甚至试图在数据可用之前渲染视图。您可以添加防御条件来解决此问题。类似于* ngIf =“ item && item.name”。 希望对您有帮助!
答案 3 :(得分:1)
您还可以像这样使用安全导航操作符?
:
<div><span>Name: </span>{{item?.name}}</div>
答案 4 :(得分:1)