Angular 惰性路由和可选矩阵参数

Angular Lazy Routes and optional matrix parameters

Angular 6

我正在使用全局可选矩阵参数通过 ngx-translate 动态切换语言:my-app/#some-component;lang=it

在我引入所有应用程序模块的延迟加载之前,这段代码曾经有效

app.component.ts

this.router.events.subscribe((event: Event) => {
  if (event instanceof RoutesRecognized) {
    const params = event.state.root.firstChild.params;
    const lang = params['lang'];
    if (lang) {
      this.languageService.changeLanguage(lang);
    }
  }
});

延迟加载时,params 变量为空。我不知道如何恢复所需的功能。

这也不起作用(空):

this.activatedRoute.params.subscribe(params => console.log(params));

this.activatedRoute.url.subscribe(segments => {
  segments.forEach(segment => console.log(segment.parameterMap.keys));
});

我没有想法,需要一些帮助。

经过更多研究,我找到了解决方案。

虽然看起来很丑

this.router.events.pipe(
  filter(event => event instanceof RoutesRecognized)
).subscribe((event: RoutesRecognized) => {
  event.state.root.children.forEach(child => {
    child.children.forEach(c => {
      const params = c.params;
      // do stuff
    });
  });
});