当我的 Angular 组件 HTML 呈现时。我会得到很多看起来像这样的错误
错误类型错误:无法读取未定义的属性(读取“someProperty”)
在我的 HTML 页面中,我有很多看起来像这样的绑定
<h1>{{event.title.toUpperCase()}}</h1>
在大多数组件中,我调用服务以从“ngOnInit()”中的控制器获取数据,并且我知道在数据从控制器返回之前防止此错误的一种解决方案是使属性可以像这样为空
event?.title
但这似乎不是一个实际的解决方案,特别是如果我在页面上有几十个。
我试过的 -
- 用“?”使它们可以为空 但这似乎不正确,特别是如果我总是这样做
- 将从控制器返回的对象类型设置为“任意”(例如事件:任意),但在某些情况下仍会显示错误
问题 - 处理此问题的最佳解决方案是什么,以便在我的页面数据加载之前我不会一直收到这些错误?
我应该有一些像 *ngIf="event" 这样的条件并隐藏页面直到收到数据并在等待时显示一些加载指示器?或者有什么方法可以防止这些错误显示在控制台中?
编辑 - 这是我用来从控制器获取数据并将其设置为“事件”的代码
// component
event: any;
// ngOnInit()
this.eventService.getEvent(this.id).pipe(take(1)).subscribe(response => {
this.event = response;
}, error => {
console.log(error);
});
// service
getEvent(id: number): Observable <any> {
return this.http.get<any>(this.baseUrl + 'events/' + id);
}