Angular2 Component不会为参数化路由重新初始化

时间:2016-08-09 09:59:42

标签: angular typescript angular2-routing

我的测试路线低于参数T1:

find.exe

当我从'Test / 1'路由到'Test / 2'时,{ path: 'Test/:T1', component: TestComponent }, 不会重新初始化。这是角度路由器的问题吗?

我正在使用TestComponent

2 个答案:

答案 0 :(得分:2)

这是目前唯一受支持的行为。有计划将此配置为https://github.com/angular/angular/issues/9811

您可以订阅参数更改并在那里进行初始化

export class MyComponent {
    constructor(private route : ActivatedRoute,
      private r : Router) {}

    reloadWithNewId(id:number) {
        this.r.navigateByUrl('my/' + id + '/view');
    }

    ngOnInit() {
      this.sub = this.route.params.subscribe(params => {
         this.paramsChanged(params['id']);
       });
    }

    paramsChanged(id) {
      console.log(id);
      // do stuff with id

    }
}

另见How do I re-render a component manually?

答案 1 :(得分:1)

在网上搜索此路由器问题的答案大约2个小时后,我的解决方案是放弃路由器,让我的组件做它的事情。

window.location.href = '/my/' + new_id_param + '/view';

如果您没有可以通过访问带有正确参数的网址来阻止加载的警卫,这对您也有用。

不是“最佳实践方式”,但它对我有用。