当我不断向导航堆栈添加页面时,会创建越来越多的 SimpleComponent 类实例。出于这个原因,我不止一次订阅“ev”事件并不止一次触发代码。
您可以通过在我的 plunker 示例中转到“那里”和“返回”并在不同情况下触发事件来检查这一点(检查控制台警告以获取结果)。您还可以看到,即使您回到导航堆栈的顶部,您仍然拥有订阅。
ionViewWillLeave 不工作可能是因为它不是我要离开的实际视图
我想知道我该怎么做才能避免这种情况?我希望像旧式 AngularJS 指令一样包含 SimpleComponent,因为我在我的应用程序中多次使用它。
export class SimpleComponent {
constructor(private ev: Events) {
this.ev.subscribe('ev', e => {
console.warn(e[0]);
});
}
}
// home.ts template
<simple-component></simple-component>
<button (click)="go()">Go next page</button>
<button (click)="raiseEv()">Raise Event</button>
Run Code Online (Sandbox Code Playgroud)