我有一条接受: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]);
如果需要其他任何内容,请告诉我。
答案 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();
}
}
我希望这会有所帮助:)