在Angular 2中,路由的变化会导致(click)事件处理器的变化检测被中断,这是因为路由的变化会触发组件的销毁和重新创建,从而导致原本绑定在模板中的事件处理器被重新创建。
为了解决这个问题,可以使用Angular的ChangeDetectorRef类来手动触发变化检测。以下是一个示例代码:
import { Component, ChangeDetectorRef } from '@angular/core';
constructor(private cdr: ChangeDetectorRef) { }
onClick() {
// 处理点击事件的逻辑
// 手动触发变化检测
this.cdr.detectChanges();
}
在这个示例中,通过调用ChangeDetectorRef的detectChanges()
方法,可以手动触发变化检测,从而确保事件处理器的变化能够被正确检测和应用。
请注意,手动触发变化检测可能会影响性能,因此应谨慎使用。只有在确实需要在路由变化时更新组件状态时才使用这种方法。