在我的 Angular 2 应用程序中,我有一个选项卡区域,用户可以在其中从一组独立但上下文相关的组件中进行选择。当他们点击这些链接之一时,相关组件会根据 routerLink 中定义的内容加载,如下所示:
<a class="page-content-header-item" routerLink="/page1" routerLinkActive="selected">Page 1</a>
这运作良好。但是,从那时起,我们构建了应用程序以将各种用户选择的过滤器选择保存为 URL 中的参数。这样,当他们重新加载组件时,他们最近的选择仍然可见并应用于数据。因此,在用户做出一些过滤器选择后,URL 可能如下所示:
http://somesite.com/page1;language_filter=true;language_selection=English
其组件代码如下所示:
public changePage(page, value, type, body)
{
this.onUserSelection(value, type, body, page);
this.route.params.subscribe(
(params: any) => {
this.page = params['page'];
this.language_filter = params['language_filter'];
this.language_selection = params['language_selection'];
}
);
this.router.navigate(
['/page1', {
page: page,
language_filter: this.language_filter,
language_selection: this.language_selection,
}]);
}
这适用于主要导航方法,这些方法通过路由文件完成,每个方法如下所示:
{ path: 'page1', component: Page1Component, canActivate: [AuthGuard], data: {contentId: 'page1'} }
但是,对于我提到的这个选项卡区域,它根据硬编码的 routerLink 参数加载组件。所以我现在意识到,当用户以这种方式导航回组件时,而不是通过我们提供的其他方式之一,它实际上会覆盖 URL 参数——因为它实际上是在加载“page1”——因为这个<a class="page-content-header-item" routerLink="/page1" routerLinkActive="selected">Page 1</a>
...因此,之前添加的 URL 参数将被清除。
所以,我的问题是,有没有办法可以编辑这段代码:
<a class="page-content-header-item" routerLink="/page1" routerLinkActive="selected">Page 1</a>
...所以它允许一些动态变量?还是我必须找到一种新方法来处理此选项卡区域中的导航?