我的组件上有一个属性,用于可能会填充的警报消息:
alerts: ReportAlertMessage[];
如果数组有任何数据,我正在尝试向我们ngIf
显示输出。
我第一次尝试:
<div class="row" *ngIf="alerts">
但它不起作用,它会返回此错误:
无法读取未定义
的属性“nativeElement”
所以我试过了:
<div class="row" *ngIf="typeof(alerts) !== 'undefined'">
这给了我:
self.context.typeof不是函数
我想检查它是否已初始化且至少有1个值。使用ngIf
执行此操作的方法是什么?
编辑:
完整的异常消息。问题似乎是偶然的,因为我用一个可观察的数据填充数组:
EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: Cannot read property 'nativeElement' of undefined
Error: Error in :0:0 caused by: Cannot read property 'nativeElement' of undefined
at ViewWrappedError.ZoneAwareError (http://localhost:4200/polyfills.bundle.js:3561:33)
at ViewWrappedError.BaseError [as constructor] (http://localhost:4200/vendor.bundle.js:30581:16)
at ViewWrappedError.WrappedError [as constructor] (http://localhost:4200/vendor.bundle.js:30646:16)
at new ViewWrappedError (http://localhost:4200/vendor.bundle.js:61302:16)
at CompiledTemplate.proxyViewClass.DebugAppView._rethrowWithContext (http://localhost:4200/vendor.bundle.js:83662:23)
at CompiledTemplate.proxyViewClass.DebugAppView.detectChanges (http://localhost:4200/vendor.bundle.js:83635:18)
at ViewRef_.detectChanges (http://localhost:4200/vendor.bundle.js:62229:20)
at RouterOutlet.activate (http://localhost:4200/vendor.bundle.js:67737:42)
at ActivateRoutes.placeComponentIntoOutlet (http://localhost:4200/vendor.bundle.js:25393:16)
at ActivateRoutes.activateRoutes (http://localhost:4200/vendor.bundle.js:25360:26)
at http://localhost:4200/vendor.bundle.js:25296:58
at Array.forEach (native)
at ActivateRoutes.activateChildRoutes (http://localhost:4200/vendor.bundle.js:25296:29)
at ActivateRoutes.activate (http://localhost:4200/vendor.bundle.js:25270:14)
at http://localhost:4200/vendor.bundle.js:24830:22
我也试过写一个静态bool。当我从可观察的
设置回调内的属性值时,似乎会发生此错误答案 0 :(得分:0)
似乎第一种是正确的方法。它是警告访问修饰符public
答案 1 :(得分:0)
试试这个
&LT; div class="row" *ngIf="alerts.length">
答案 2 :(得分:0)
或者,您可以将组件中的方法称为
<div class="row" *ngIf="isEmpty(alerts)">
组件功能
isEmpty(alerts){
if(alerts===[]) {
return true;
} else {
return false;
}
}