角度 4 子路由

Posted

技术标签:

【中文标题】角度 4 子路由【英文标题】:angular 4 child routing 【发布时间】:2017-07-27 19:47:55 【问题描述】:

我正在尝试为孩子编写路由。我遇到的问题是路径没有正确插入浏览器的 url 栏中。代码下方。

路由器模块

const routes: Routes = [

  path: 'menu', component: MenuComponent, canActivate: [AuthGuard],
    children: [
       path: 'upload', component: DrawingUploadComponent ,
       path: 'account', component: AccountComponent ,
       path: 'projects', component: ProjectListComponent 
    ]
];

@NgModule(
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
)

export class MenuRoutingModule 

菜单组件

<nav>
  <a routerLink="/projects" routerLinkActive="active">Projects</a>
  <a routerLink="/upload" routerLinkActive="active">Upload</a>
  <a routerLink="/account" routerLinkActive="active">Account</a>
</nav>
MENU COMPONENT
<router-outlet></router-outlet>

父组件:

const routes: Routes = [
  path: 'login', component: LoginComponent,
  path: 'register', component: RegistrationComponent,
  path: "", redirectTo: "login", pathMatch: "full",
  path: 'menu', component: MenuComponent, canActivate: [AuthGuard]
];

@NgModule(
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
)

export class AppRoutingModule 

所以问题是当我在"/menu" 下显示菜单组件时,现在当我点击任何链接时,例如

<a routerLink="/upload" routerLinkActive="active">Upload</a>

我收到控制台错误 无法匹配任何路由。 URL 段:“上传” 错误:无法匹配任何路由。 URL 段:“上传”

但是当我在浏览器栏“/menu/upload”中手动输入路线时,我得到了正确的结果

【问题讨论】:

【参考方案1】:

当您的路由以 / 开头时,它指的是您应用的根目录。您需要删除它,或者使用完整路径,例如routerLink="/menu/upload".

【讨论】:

以上是关于角度 4 子路由的主要内容,如果未能解决你的问题,请参考以下文章

如何处理角度5递归未知确切数字路由器参数?

有没有办法在角度上实现两步路由?

路由在角度 6 中无法正常工作

角度简单路由不起作用

角度 2.0.0-rc1 路由和 useAsDefault

带有角度路由器的 Ionic 4 setRoot