当 aot 设置为 true 时,ngClass 和 ngIf 条件无法编译
ngClass and ngIf condition fail to compile when aot is set to true
我有一个 div 具有 ngClass 条件:
<div [ngClass]="{ 'active': nbActive === 1 }" >
<!-- some stuff -->
</div>
还有一个类似的 div,带有 ngIf 条件:
<div *ngIf="nbActive === 1">
<!-- some stuff -->
</div>
下面是 NbActive 声明:
export class WhyChooseUsComponent implements OnInit {
nbActive: 0;
constructor() { }
// some stuff
}
如果在我的生产配置中,我设置:
"aot": true,
"buildOptimizer": true,
然后我得到以下错误:
This condition will always return 'false' since the types '0' and '1' have no overlap.
如果我将 aot
和 buildOptimizer
设置为 false
,我不会收到任何错误,并且一切都按预期工作。
这个问题是从哪里来的,我该如何解决?
你可以这样试试
<div [ngClass]="isActive === 1 ? 'active': '' " >
<!-- some stuff -->
</div>
<div *ngIf="isActive">
<!-- some stuff -->
</div>
你写了
nbActive: 0;
这意味着 nbActive 唯一可接受的值为 0。
您可能需要这个:
nbActive: number = 0;
我有一个 div 具有 ngClass 条件:
<div [ngClass]="{ 'active': nbActive === 1 }" >
<!-- some stuff -->
</div>
还有一个类似的 div,带有 ngIf 条件:
<div *ngIf="nbActive === 1">
<!-- some stuff -->
</div>
下面是 NbActive 声明:
export class WhyChooseUsComponent implements OnInit {
nbActive: 0;
constructor() { }
// some stuff
}
如果在我的生产配置中,我设置:
"aot": true,
"buildOptimizer": true,
然后我得到以下错误:
This condition will always return 'false' since the types '0' and '1' have no overlap.
如果我将 aot
和 buildOptimizer
设置为 false
,我不会收到任何错误,并且一切都按预期工作。
这个问题是从哪里来的,我该如何解决?
你可以这样试试
<div [ngClass]="isActive === 1 ? 'active': '' " >
<!-- some stuff -->
</div>
<div *ngIf="isActive">
<!-- some stuff -->
</div>
你写了
nbActive: 0;
这意味着 nbActive 唯一可接受的值为 0。
您可能需要这个:
nbActive: number = 0;