无法将 [ngClass] 分配给 *ngFor 循环生成的 Angular 个组件

Can't assign [ngClass] to Angular components generated by *ngFor loop

我正在尝试按照 展示如何在单击组件时将 class active 绑定到组件。当我根据下面的标记执行代码时

<div *ngFor="let menu of menus;"
     [id]="menu.id"
     (click)="onClick($event,menu.link)"
     [ngClass]="'active':menu.active"
     class="navigator">
  {{menu.title}}
</div>

我收到以下错误。注意 - 组件中有 onClick(...) 方法,此刻我注释掉了它的所有内容。该错误似乎完全与标记有关(除非我需要在组件中声明一些额外的东西,例如数组等)。至少到目前为止,我在谷歌搜索这个问题时看到了这些例子。

Uncaught Error: Template parse errors:
Parser Error: Unexpected token ':' at column 9 in ['active':menu.active] in ng:///AppModule/NavigatorComponent.html@11:9 ("
[id]="menu.id"
(click)="onClick($event,menu.link)"
[ERROR ->][ngClass]="'active':menu.active"
class="navigator">
{{menu.title}}
"): ng:///AppModule/NavigatorComponent.html@11:9

我错过了什么?

'active':menu.active 不是有效的表达式。

用户要么对象文字语法

[ngClass]="{'active':menu.active}"

或字符串语法

[ngClass]="menu.active ? 'active' : null"

[class.active]="menu.active"

在这种情况下,另一种方法可以使用 [class] 属性,因为它可以更简洁,正如@Günter Zöchbauer 指出的那样:

 <div *ngFor="let menu of menus;"
     [id]="menu.id"
     (click)="onClick($event,menu.link)"
     [class.active]="menu.active"
     class="navigator">
  {{menu.title}}
</div>
[ngClass]="{'active':menu.active}"

这是正确的语法