Angular CLI刷新更改路由上的内容

时间:2018-03-12 18:37:23

标签: angular typescript angular-cli

我有一个Angular CLI应用程序。

在应用程序中,我有一张地图(在右侧)和左侧面板(显示有关路线的当前信息)。如果我点击地图,openlayers会找到最近的要素,并将我重定向到/ map / routeID / detail 。一切都像魅力一样(在详细信息组件的TS上我从API加载数据,如果没有的话,一切都很好)。 问题是......如果我点击到另一个地方(靠近其他路线) URL更改(所以我被重定向到另一个路线细节)。 但是信息是旧的(来自其他路线)。我正在NgOnInit中加载,我试图打印控制台字符串,我发现当我的路线从狐狸改变时,没有调用NgOnInit示例/ map / 1 / detail to / map / 2 / detail。

我该如何处理?例如,如果路线改变,则再次触发NgOnInit或类似的东西。

1 个答案:

答案 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(它会自动取消订阅)。