【问题标题】:ngClass and ngIf condition fail to compile when aot is set to true当 aot 设置为 true 时,ngClass 和 ngIf 条件编译失败
【发布时间】:2019-09-25 09:24:35
【问题描述】:

我有一个带有 ngClass 条件的 div:

<div [ngClass]="{ 'active': nbActive === 1 }" >
    <!-- some stuff -->
</div>

还有一个类似的带有 ngIf 条件的 div:

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

下面是 NbActive 声明:

export class WhyChooseUsComponent implements OnInit {
   nbActive: 0;
   constructor() { }
   // some stuff
}

如果在我的生产配置中,我设置:

"aot": true,
"buildOptimizer": true,

然后我得到以下错误:

此条件将始终返回“false”,因为类型“0”和“1”没有重叠。

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

【问题讨论】:

  • 你能出示isActive声明吗
  • 问题已编辑。为了避免混淆,我将 isActive 重命名为 nbActive。

标签: javascript angular typescript angular8 angular-aot


【解决方案1】:

你写的

   nbActive: 0;

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

你可能需要这个:

   nbActive: number = 0;

【讨论】:

    【解决方案2】:

    你可以这样试试

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

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多