在Angular 2+中从路由中排除特定路径

8

我的Angular路由配置如下:

export const routes: Routes = [
  { path: 'mgmt', ... },
  { path: 'about', ... },
  { path: '**', component: PageNotFoundCmp }
];

现在在页面上有一个指向帮助页面的链接(<a href="/help/en/index.html" target="_blank">),这些页面是托管在同一服务器上的静态资源。根据以上路由配置,显然该链接将被匹配到其他** - 页面未找到。
假设我们不能将帮助资源托管在另一个域中,有没有办法从angular路由中排除/help/**路径?或者你认为这是一个Angular需要支持的有效功能要求吗?

1
我认为你应该配置服务器,不要从/help/**路径重定向到index.html - yurzui
有什么进展吗? - mp3por
@mp3por 目前 Angular 不支持此功能,因此我选择为所有 Angular 路由创建一个专用上下文,而 /help/* 静态资源仍由同一服务器提供服务。 - Roy Ling
@KhaledRamadan,如我上面所评论的那样,我为Angular应用程序添加了一个上下文。在我的情况下使用base href,所有Angular路由现在是“/ui/**”,并且我在服务器端添加了必要的配置,以便将所有“/ui/*”请求路由到index.html(客户端路由),而“/help/*”则路由到静态帮助资源。 - Roy Ling
1
你看过这篇帖子吗? https://dev59.com/cFkS5IYBdhLWcg3wQEcU - Silvester Schn.
显示剩余3条评论
1个回答

0
如此提到 angular 2 exclude url in routing 的想法,唯一的解决方案似乎是在你的 RouterModule 配置中设置 useHash: true
@NgModule({
  imports: [
    RouterModule.forRoot(
      [
        {
          path: 'login',
          loadChildren: './login/login.module#LoginModule'
        },
        {
          path: '**',
          redirectTo: ''
        },
      ],
      {
        useHash: true,
        onSameUrlNavigation: 'reload'
      }
    )
  ],
  exports: [RouterModule]
})
export class AppRoutingModule { }

我使用了另一种解决方案来解决该问题,请参见问题中的评论。谢谢。 - Roy Ling
1
你好@RoyLing,你能详细说明一下你的解决方案吗? - user1767316
@user1767316 从另一个 Web 上下文中提供 Angular 应用程序 :) - Roy Ling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接