有没有更好的方法来做以下事情?下面是在Chrome中旋转CPU(如JavaScript分析器)。

<div *ngFor="let item of items">
    <itemComp [item]="item" [active]="item == service.activeItem"></itemComp>
</div>

当itemcomp组件变为活动组件时,它们是否可以订阅通知?
对于EX.,一旦它们被渲染,我们就说用户点击任何项目来标记为活动的。只有一个项目可以随时激活。比方说,我只想更改活动项的背景色以突出显示它。在这种情况下,当前活动项变为非活动项,新项变为活动项。如何传播此更改?

最佳答案

当itemcomp组件变为活动组件时,它们是否可以订阅通知?
你的意思是当他们第一次被渲染的时候?如果itemcomp是您的组件,您可以实现angularslifecycle-hooks中的一个,比如ngoninit,并在那里运行代码。
编辑:您可以向每个项目添加一个单击事件,其函数为:

<div *ngFor="let item of items">
    <itemComp [item]="item" [active]="item == service.activeItem" (click)="activateItem(item)"></itemComp>
</div>

使所有项目处于非活动状态
使单击的项处于活动状态

10-06 04:06