ngClass и условие ngIf не компилируются, когда aot имеет значение true - PullRequest
2 голосов
/ 25 сентября 2019

У меня есть 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,

Тогда я получаю следующую ошибку:

Это условие всегда будет возвращать «ложь», так как типы «0 'и' 1 'не имеют перекрытия.

Я не получаю никакой ошибки, если я установил aot и buildOptimizer на false, и все работает как положено.
Откуда возникает эта проблема и как я могу это исправить?

Ответы [ 3 ]

2 голосов
/ 25 сентября 2019

Вы написали

   nbActive: 0;

Это означает, что единственным приемлемым значением для nbActive является 0.

Возможно, вам понадобится это вместо:

   nbActive: number = 0;
0 голосов
/ 25 сентября 2019

вы можете попробовать вот так


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

<div *ngIf="isActive">
    <!-- some stuff -->
</div>
0 голосов
/ 25 сентября 2019

Вы не можете проверить логическое значение с помощью номера, поэтому я бы посоветовал вам изменить свой код следующим образом

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

<div *ngIf="isActive">
    <!-- some stuff -->
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...