我有一个Angular CLI应用程序。
在应用程序中,我有一张地图(在右侧)和左侧面板(显示有关路线的当前信息)。如果我点击地图,openlayers会找到最近的要素,并将我重定向到/ map / routeID / detail 。一切都像魅力一样(在详细信息组件的TS上我从API加载数据,如果没有的话,一切都很好)。 问题是......如果我点击到另一个地方(靠近其他路线) URL更改(所以我被重定向到另一个路线细节)。 但是信息是旧的(来自其他路线)。我正在NgOnInit中加载,我试图打印控制台字符串,我发现当我的路线从狐狸改变时,没有调用NgOnInit示例/ map / 1 / detail to / map / 2 / detail。
我该如何处理?例如,如果路线改变,则再次触发NgOnInit或类似的东西。
答案 0 :(得分:5)
我相信您希望观察路线参数的更改,而不是像评论中那样获取初始值。为此,您需要在paramMap
对象上订阅其中一个observable(例如ActivatedRoute
https://angular.io/api/router/ParamMap),然后运行每次路由更改所需的代码。
@Component({...})
class ExampleComponent {
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.route.paramMap.subscribe(map => {
// run code to process
});
}
}
注意,paramMap
订阅不需要取消订阅according to the docs(它会自动取消订阅)。