代码之家  ›  专栏  ›  技术社区  ›  Jacopo Sciampi

带隐藏路径的路由

  •  0
  • Jacopo Sciampi  · 技术社区  · 6 年前

    我有一条基本路线:

    const appRoutes: Routes = [
      {
        path: 'login',
        component: LoginComponent
      },
      {
        path: '',
        component: WidgetComponent
      },
      {
        path: 'P3',
        component: DashboardComponent
      },
      {
        path: 'NN',
        component: DashboardComponent
      },
      {
          path: '**',
          redirectTo: ''
      }
    ];
    

    而且效果很好。当我导航到 .../p3 它加载了我的组件。

    现在,加载的url不仅仅是上面这个。但是像这样的:

    localhost:4200/P3?p1=hello&p2=world

    但它仍然可以正常工作 serve .

    当我构建并发布应用程序时,我遇到了一个问题:通过直接导航到 本地主机:4200/P3?p1=你好,p2=世界 服务器响应是 This page cannot be found on the server 我终于明白 P3 问题。所以我添加了 HashLocationStrategy 在我的模块中:

    { provide: LocationStrategy, useClass: HashLocationStrategy } ,

    所以现在我的网址是:

    <server>/#/P3?p1=hello&p2=world

    这解决了我的问题。

    我的问题是:有没有更好的办法?我在想,有没有可能把 P3页 在url中?我在文件上看到 skipLocationChange: true 设置为路线的 NavigationExtras 但我并不满意。

    有人有主意吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sunil Singh    6 年前

    默认位置策略 PathLocationStrategy 哪一个是最容易接受的。这就是 default strategy 在角度和利用新的 HTML5 调用的API pushstate (来自HTML5历史API)。 添加 # 进入网址,它使小噪音。所以要避免 HashLocationStrategy .

    如果您有问题,那么您可能没有添加基href。检查一下 head 您的 index.html

    <base href="/app"/>