我写了一个使用路由器的Angular2(v2.0.1)应用程序。该网站加载了几个查询字符串参数,因此完整的URL最初如下所示:
https://my.application.com/?param1=val1¶m2=val2¶m3=val3
在我的路由配置中,我有一个重定向空路由的条目:
const appRoutes: Routes = [ { path: '',redirectTo: '/comp1',pathMatch: 'full' },{ path: 'comp1',component: FirstComponent },{ path: 'comp2',component: SecondComponent } ];
我的问题是,在应用程序被引导后,URL不再包含查询参数,而是看起来像这样:
https://my.application.com/comp1
有没有什么办法可以配置路由器,以便在导航时保留初始查询字符串?
谢谢
卢卡斯
我认为在路由配置中没有办法定义它。
目前,它支持routerLinks和命令式导航以启用
> preserveQueryParams和
> preserveFragment
您可以在空路径路径中添加一个保护,在保护导航中完成/ comp1路由。
router.navigate(['/comp1'],{ preserveQueryParams: true }); //deprecated see update note
router.navigate(['/comp1'],{ queryParamsHandling: "merge" });
有一个PR允许全局配置preserveQueryParams。
更新说明:从https://angular.io/api/router/NavigationExtras开始,不推荐使用preserveQueryParams,而是使用queryParamsHandling