您好,我正在使用 Angular2 开发应用程序。我通过 api 收到一个必须在 html 表中显示的多维列表。
这是我从 api 收到的 json 的简化版本:
{
"events": [
{
"id": 0,
"name": 0,
"sub_events": [
{
"id": 0,
"name": 0,
"actions": [
{
"id": 0,
"name": 0
}
]
}
]
}
]
}
我试图在这样显示时隔离组件:
列表组件:
<event-view [event]='event' *ngFor="let event of events"></event-view>
EventComponent:(事件视图选择器)
<div>
<h1>{{event.id}} {{event.name}}</h1>
<table>
<tr subevent-view [subEvent]='subEvent' *ngFor="let subEvent of event.sub_events"></tr>
</table>
</div>
SubEventComponent:(子事件视图选择器)
<td>{{subEvent.id}}</td>
<td>{{subEvent.name}}</td>
<td>
<event-action [action]='action' *ngFor="let action of subEvent.actions"></event-action>
</td>
EventActionComponent:(事件动作选择器)
<button (click)='....' >{{action.name}}</button>
我所有的组件都使用changeDetection:ChangeDetectionStrategy.OnPush
我希望当我单击一个动作时,Angular 2 不会重新检查整个列表,而只会重新检查单击的按钮。
现在,Angular 对列表进行检查 + 对所有事件进行检查 + 对所有子事件进行检查 + 对所有操作进行检查 ...
我尝试使用 ChangeDetectorRef.detach 但它没有改变任何东西。
我的根列表事件是用 ImmutableJS 创建的。
有没有办法告诉 Angular 只检查一个子组件而不重新检查整个树?
先感谢您 ;)