2017-01-16 74 views

回答

20

,你可以注入ActivatedRoute和订阅params

constructor(route:ActivatedRoute) { 
    route.params.subscribe(val => { 
    // put the code from `ngOnInit` here 
    }); 
} 

路由器仅破坏并重新创建组件时,导航到不同的路线。当只更新路由参数或查询参数但路由相同时,组件不会被销毁和重新创建。

强制重新创建组件的另一种方法是使用自定义重用策略。又见Angular2 router 2.0.0 not reloading components when same url loaded with different parameters?(似乎没有被太多的信息尚未提供如何实现它)创建一个实例时

+1

Thx,很好的解决方案。干净我想。 – AntiCZ

1

NgOnInit将被调用一次。对于相同的实例NgOnInit将不会再被调用。为了调用它,有必要销毁创建的实例。

0

考虑将您在ngOnInit中的代码移动到ngAfterViewInit中。 后者似乎被称为路由器导航,并应在这种情况下帮助你。

+1

这确实没有发生 – nadav

6

您可以在路由器上调整reuseStrategy。

constructor(private router: Router) { 
    // override the route reuse strategy 
    this.router.routeReuseStrategy.shouldReuseRoute = function() { 
     return false; 
    }; 
} 
相关问题