如何在角度模板中正确插入嵌套的 属性 getter?
How to properly interpolate a nested property getter in angualr template?
我正在尝试将嵌套的 属性 getter 插入到 angular html 模板中:
<div class="row">
<div class="col-xs-12">
{{ myObject.myProps.someProperty1 }} -- Not working
</div>
<div class="col-xs-12">
{{ myObject.someProperty2 }} -- Working
</div>
</div>
myObject.myextendedProps
是一个 属性 getter 类型的对象,但我得到一个异常:
Cannot read property 'someProperty1' of undefined
但我确定 myProps
不为空,因为当我在控制台记录 myObject
时,我可以单击 Invoke 属性 getter三个点的myProps
属性它显示了一个真实的值。
我最好的猜测是 属性 getter 问题。有什么解决的建议吗?
可以使用 Elvis 运算符。 Elvis 运算符允许您在尝试访问插值中的属性之前检查对象是否存在
示例{{ myObject?.myProps?.someProperty1 }}
您可能会或可能不会收到错误,具体取决于您初始化数据的时间。
如果您在视图初始化之前初始化数据,即myObject
,那么您将不会收到错误。而且和getter.
没有任何关系
因此,为了在初始化视图时保持安全,您可以像这样使用安全导航运算符 (?)。
<div class="row">
<div class="col-xs-12">
{{ myObject?.myProps?.someProperty1 }}
</div>
<div class="col-xs-12">
{{ myObject?.someProperty2 }}
</div>
</div>
或者,您可以使用 *ngIf
指令来确保您仅在 myObject
定义时访问 myObject
的属性。
<div class="row" *ngIf="myObject">
<div class="col-xs-12" *ngIf="myObject.myProps">
{{ myObject?.myProps?.someProperty1 }}
</div>
<div class="col-xs-12">
{{ myObject?.someProperty2 }}
</div>
</div>
我创建了一个简单的stackblitz demo to understand it better. And you can also read more about Angular component lifecycle here https://angular.io/guide/lifecycle-hooks。
我正在尝试将嵌套的 属性 getter 插入到 angular html 模板中:
<div class="row">
<div class="col-xs-12">
{{ myObject.myProps.someProperty1 }} -- Not working
</div>
<div class="col-xs-12">
{{ myObject.someProperty2 }} -- Working
</div>
</div>
myObject.myextendedProps
是一个 属性 getter 类型的对象,但我得到一个异常:
Cannot read property 'someProperty1' of undefined
但我确定 myProps
不为空,因为当我在控制台记录 myObject
时,我可以单击 Invoke 属性 getter三个点的myProps
属性它显示了一个真实的值。
我最好的猜测是 属性 getter 问题。有什么解决的建议吗?
可以使用 Elvis 运算符。 Elvis 运算符允许您在尝试访问插值中的属性之前检查对象是否存在
示例{{ myObject?.myProps?.someProperty1 }}
您可能会或可能不会收到错误,具体取决于您初始化数据的时间。
如果您在视图初始化之前初始化数据,即myObject
,那么您将不会收到错误。而且和getter.
因此,为了在初始化视图时保持安全,您可以像这样使用安全导航运算符 (?)。
<div class="row">
<div class="col-xs-12">
{{ myObject?.myProps?.someProperty1 }}
</div>
<div class="col-xs-12">
{{ myObject?.someProperty2 }}
</div>
</div>
或者,您可以使用 *ngIf
指令来确保您仅在 myObject
定义时访问 myObject
的属性。
<div class="row" *ngIf="myObject">
<div class="col-xs-12" *ngIf="myObject.myProps">
{{ myObject?.myProps?.someProperty1 }}
</div>
<div class="col-xs-12">
{{ myObject?.someProperty2 }}
</div>
</div>
我创建了一个简单的stackblitz demo to understand it better. And you can also read more about Angular component lifecycle here https://angular.io/guide/lifecycle-hooks。