我用这种方法调用这条路线
onDateChanged(event: IMyDateModel) {
this.route.navigate(['/user/events',event.formatted]);
}
我的活动组件,
activatedroute.params.subscribe(p => { this.date = p['date?'] });
if (this.date) {
this.onDateChanged();
} else {
this.getEvents()
}
当我第一次调用它时,它会触发该组件,但是当我从同一路径再次调用相同的函数时,组件未加载新值,即之前的路径保持不变。任何人都可以帮助我.Thanks。
答案 0 :(得分:0)
如果您根据路线定义导航到与当前路线匹配的路线,则不会重新加载该组件。但是,您可以收听params
上的Observable
ActivatedRoute
,以便在路径网址中的数据发生变化时收到提醒,然后从那里重新设置您的组件。
{
path: "user/events/:type",
component: MyComponent
}
从/
导航到user/events/unformatted
将加载MyComponent。从user/events/unformatted
到user/events/formatted
的路由不会加载MyComponent。
在MyComponent内部,您可以执行以下操作:
class MyComponent {
constructor(private activatedRoute: ActivatedRoute){}
ngOnInit(){
this.activatedRoute.params.subscribe((params) => {
let newFormattingType = params["type"];
//re-setup component based on formatting type
})
}
}
您需要更新回调,以便检查日期是否已更改,并且您的回调中不应包含?
。更新您的代码以重新组合以下
activatedroute.params.subscribe((p) => {
this.date = p['date'];
if (this.date) {
this.onDateChanged();
} else {
this.getEvents();
}
});
答案 1 :(得分:0)
来自Angular的路由教程:
ngOnInit() {
this.route.params
// (+) converts string 'id' to a number
.switchMap((params: Params) => this.service.getHero(+params['id']))
.subscribe((hero: Hero) => this.hero = hero);
}
有关更多信息,请访问:https://angular.io/docs/ts/latest/guide/router.html