我刚刚完成试图解决以下问题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。
不,没有强制渲染运行时错误的设置。你必须用'?或绑定到一个检查赋值的内部方法。
在这种情况下只需要一个elvis操作符(?)。由于您在ion-card
元素中包含*ngIf="user"
,因此您只需要检查Company
属性是否为null,如下所示:
<p>{{user.Company?.Name}}</p>