为什么每次都重复调用 ngOnInit

Nei*_*eil 3 typescript angular2-routing angular

Per Angular ( https://angular.io/api/core/OnInit表示ngOnInit 在第一次检查指令的数据绑定属性之后被调用,并且在它的任何孩子被检查之前被调用。它被调用仅在指令实例化时一次。),

所以 ngOnInit 应该被调用一次,但如plunker所示(这是来自https://angular.io/tutorial/toh-pt5的副本),我只修改了 app/heroes/heroes.component.tsapp/dashboard /dashboard.component.ts有 console.log

并且打开F12(开发者工具)时,控制台会在路由改变时重复显示日志。

我看看 为什么 ngOnInit 调用了两次?, Constructor 和 ngOnInit 的区别, Angular 2 App Component ngOnInit 在使用 iframe 时调用两次, ngOnInit 每次更改路由时调用

但不明白为什么每次都调用 ngOnInit。

console.log("ngOnInit in All Heroes");
console.log("ngOnInit InDashBoard");
Run Code Online (Sandbox Code Playgroud)

hay*_*den 5

当路由改变时,组件被销毁,然后当路由变回时,组件再次初始化

将此添加到DashboardComponent自己查看:

    ngOnDestroy() {
      console.log("ngOnDestroy InDashBoard");
    }
Run Code Online (Sandbox Code Playgroud)