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

Ang*_*lux 1 typescript angular-cli angular

我有一个Angular CLI应用程序。

在应用程序中,我有一个地图(在右侧)和左侧面板(显示有关路线的当前信息)。如果我单击地图,则openlayers将找到最近的要素,并将我重定向到/ map / routeID / detail。一切都像魅力一样工作(在详细信息组件的TS上,我从API加载数据,并且一切正常)。问题是...如果我单击到另一个地方(在其他路线附近),则URL更改(因此,我已重定向到另一个路线详细信息)。但是这些信息是古老的(来自另一条路线)。我正在NgOnInit中进行加载,我尝试打印控制台字符串,但是当我的路由从Fox示例/ map / 1 / detail更改为/ map / 2 / detail时,我发现NgOnInit没有被调用。

我该如何处理?例如,如果路由更改,则再次触发NgOnInit或类似的操作。

Dan*_*pel 6

我相信您希望监视路由参数的变化,而不是像注释中那样获取初始值。为此,您将需要在对象上预订一个可观察对象(例如paramMap https://angular.io/api/router/ParamMapActivatedRoute,然后运行每次路线更改所需的代码。

@Component({...})
class ExampleComponent {
    constructor(private route: ActivatedRoute) {
    }

    ngOnInit() {
        this.route.paramMap.subscribe(map => {
            // run code to process
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是,paramMap不需要根据文档取消订阅(它会自动为您取消订阅)。