我刚刚尝试解决以下问题4小时。
<ion-card *ngIf="user">
<ion-item>
<h2>{{user.FirstName}}!</h2>
<p>{{user.Company.Name}}</p>
</ion-item>
</ion-card>
<some-other-component></some-other-component>
user = {
FirstName: 'Nick'
};
请注意,user.Company
未设置。我的整个组件都停止了工作。不只是ion-card
,some-other-component
呈现一次,然后停止更新。它响应了点击事件,但从不更新。
我的问题是:有没有办法强制Angular / Ionic显示它无法呈现而不是失败?
我的解决方法是:<p>{{user?.Company?.Name}}</p>
我很害怕我们现在必须检查每个物体是否存在物业。我想知道是否需要设置/配置以改变其行为方式。期望的结果是控制台错误,或者像Angular 1.x那样渲染。
答案 0 :(得分:2)
不,没有设置强制渲染运行时错误。你必须用'?'检查作业或绑定到检查内部分配的方法。
答案 1 :(得分:1)
在这种情况下,只需要一个elvis操作符(?)。由于您在*ngIf="user"
元素中包含ion-card
,因此您只需要检查Company
属性是否为空,如下所示:
<p>{{user.Company?.Name}}</p>