首页 > 解决方案 > 如何设置角度路由

问题描述

是我的工作。

我设置了一个守卫将请求URI /admin转发到/login,您可以参考/admin/admin.guard.ts了解详细信息。

它工作正常。但是,当请求 URI 是 /admin/abc 时,它不起作用。

以下是/admin/admin-routing.module.ts 内容:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AdminComponent } from './admin.component';
import { AdminGuard } from './admin.guard';
const routes: Routes = [
  {
    path: 'admin',
    canActivate: [AdminGuard],
    component: AdminComponent,
    children: [
      {
        path: '',
        redirectTo: 'admin',
        pathMatch: 'full'
      },
      {
        path: '**',
        redirectTo: 'admin',
        pathMatch: 'full'
      }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class AdminRoutingModule { }

我该如何解决这个问题?

标签: javascriptangular

解决方案


使用绝对路径进行重定向:

const routes: Routes = [
{
  path: 'admin',
  canActivate: [AdminGuard],
  component: AdminComponent,
  children: [
    {
      path: '',
      redirectTo: '/admin',
      pathMatch: 'full'
    },
    {
      path: '**',
      redirectTo: '/admin',
      pathMatch: 'full'
    }
  ]
}
];

如果您使用相对路径,则会出现无限循环的重定向。从 /admin/123 到 /admin/admin 到 /admin/admin 等等。


推荐阅读