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
});
});
});
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
});
});
});