我正在使用Angular2和ionic
,我有这样的组件:
class MyComponent implements OnInit, OnDestroy {
ngOnInit() {
console.log("init");
socket.on("something", this.something.bind(this));
}
ngOnDestroy() {
console.log("destroy");
socket.remove("something", this.something.bind(this));
}
}
要打开此页面,我会写this.nav.setRoot(MyComponent)
。现在我的页面显示MyComponent
,套接字正在侦听“某事”。
要刷新它,我再次写this.nav.setRoot(MyComponent)
。现在我的页面显示MyComponet
,并且套接字没有监听“某事”。
控制台输出是:
初始化
初始化
破坏
ngOnInit
,然后只运行第一个组件的ngOnDestroy
?答案 0 :(得分:1)
据我了解,您无法真正控制,第二个组件的ngOnInit
与第一个的ngOnDestroy
之间应该首先发生什么。这些钩子,至少来自2个不同的组件,彼此不相关。钩子在同一组件上是否相互依赖。阅读this。
可能,这取决于目前更快触发的内容。
在这种情况下,您可以执行的操作是,在调用ngOnDestroy
之前,您可以从this.nav.setRoot(MyComponent)
移动代码。
此外,如果要求不适合此类代码,您可以尝试刷新需要刷新的特定类型的UI组件,而不是刷新整个组件,如this.nav.setRoot(MyComponent)
。
您可以使用document.getElementByID('myDiv')
类型的操作使用DOM刷新特定的UI组件。
希望这会有所帮助。如果没有,请提及具体细节。
答案 1 :(得分:0)