0

Routerlink url 不应更改为默认 url..

当我使用 RouterModule.forRoot(appRoutes, { useHash: true }); 它工作正常..但我改为useHash = false,它不工作

在 html 中,我使用了以下代码:

<a routerLink="/applicationredirect" [queryParams]="{appId: recentMenu.applicationId}">{{recentMenu.applicationMasterName}} - {{recentMenu.applicationCode}}</a>

路由页面:

const appRoutes: Routes = [
       .....
 {
   path: 'applicationredirect', component: ApplicationRedirectComponent,
 },
  {
path: 'home', component: HomeComponent,
   }
  ...
// otherwise redirect to home
{ path: '**', redirectTo: 'home' }
  ];
const StartupRouting = RouterModule.forRoot(appRoutes, { useHash: false });

当我在新标签中打开时,

首先我得到,

本地主机:4200/applicationredirect?appId=1084518

然后变成这个,

本地主机:4200#/home

最后我得到了这个默认页面

本地主机:4200/home#/home

我希望 (localhost:4200/applicationredirect?appId=1084518) url 打开..

4

1 回答 1

0

这是正常的行为。几点:

  • 如果你想调用没有哈希的路由,不要提供第二个参数 { useHash: ... }
  • 您没有applicationredirect在路由器配置对象中声明该段,因此在您声明它之前,它将回退到/home您将其设置为的路由{ path: '**', redirectTo: 'home' }
  • 如果您在任何模块中有它,请删除它:{ provide: LocationStrategy, useClass: HashLocationStrategy }因为 PathLocationStrategy 是默认策略
于 2019-06-13T10:06:21.273 回答