Angular 2 - 具有多个参数的路径未加载其指定的组件两次

时间:2017-01-25 21:51:52

标签: angular angular2-routing

我有一条接受:id:type的子路线。它们单独工作并加载分配给它们的组件,但组件仅在id/:type一起使用时加载一次,而在:id:type更新时不再加载。

示例:
myapp/1 - >这加载(对于:id
myapp/b - >这加载(对于:type
myapp/1/b - >这只加载一次(对于:id/:type的组合) myapp/2/b - >这不会再次加载组件(更新:id时)

我可以在浏览器中看到所有路由的URL都正确更改。

儿童路线类代码:

export const CHILD_ROUTES: Routes = [
    { path: '', component: TitleComponent },
    { path: ':id', component: TitleComponent },
    { path: ':id/:type', component: TitleComponent } //This componment doesn't load
];


用于更改/操纵路线的代码:
this.router.navigate(['/myapp', this.id]);
this.router.navigate(['/myapp', this.id, this.type]);

如果需要其他任何内容,请告诉我。

1 个答案:

答案 0 :(得分:1)

未加载新内容的原因是您使用的是ActivatedRoute "params",这是一个Observable,因此路由器可能无法在导航到同一组件时重新创建该组件。在您的情况下,参数正在更改,而不重新创建组件。 所以尝试这种解决方案

    export class IncidentAnalysisComponent implements OnInit, OnDestroy {
      id: number;
      limit: number;
      private sub: any;

      constructor(private route: ActivatedRoute) {}

      ngOnInit() {
        this.sub = this.route.params.subscribe(params => {
           this.id = +params['id']; 
           this.limit = 5; // reinitialize your variable here
           this.callPrint();// call your function which contain you component main functionality 
        });
      }
     ngOnDestroy() {
        this.sub.unsubscribe();
    }
}

我希望这会有所帮助:)