javascript - 如何设置 Angular 路由

标签 javascript angular

Here是我的工作。

我设置了一个守卫,将请求 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 { }

如何解决这个问题?

最佳答案

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

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等等。

关于javascript - 如何设置 Angular 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58483710/

相关文章:

javascript - 嵌入视频播放器播放按钮一次播放所有视频播放器

javascript - 令人印象深刻的响应式 JavaScript 效果。怎么做?

库模块中的 Angular APP_INITIALIZER 生成元数据编译时错误 : Lambda not supported

javascript - Angular javascript 页面编译但显示空白

javascript - 如何在 Browserify 和 Javascript 中进行命名空间

javascript - 没有大括号的 JavaScript 中的 Lambda 函数语法

Angular 9 和 .NET Web Api - 如何使用 http.post 请求修复 CORS 问题

javascript - 从 javascript 渲染 angular2 组件并获取 html 作为返回

java - 无法执行目标 org.apache.maven.plugins :maven-jar-plugin:2. 6:jar

javascript - Symfony2 Ajax 和 Jquery