当 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.

如果我将 aotbuildOptimizer 设置为 false,我不会收到任何错误,并且一切都按预期工作。
这个问题是从哪里来的,我该如何解决?

你可以这样试试


<div [ngClass]="isActive === 1 ? 'active': '' " >
    <!-- some stuff -->
</div>

<div *ngIf="isActive">
    <!-- some stuff -->
</div>

你写了

   nbActive: 0;

这意味着 nbActive 唯一可接受的值为 0。

您可能需要这个:

   nbActive: number = 0;