Angular 8路由器未重定向到路由

时间:2019-10-24 16:29:28

标签: angular angular2-routing angular-routing angular8

我的 app.component.html

<router-outlet></router-outlet>

我的 app-routing.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { MenuComponent } from './components/menu/menu.component';
import { BlogComponent } from './components/blog/blog.component';
import { TeamComponent } from './components/team/team.component';

const routes: Routes = [
  { path: '', component: MenuComponent },
  { path: '**', component: MenuComponent },
  { path: 'menu', component: MenuComponent },
  { path: 'blog', component: BlogComponent },
  { path: 'team', component: TeamComponent }
];

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

当我在网址中写入要转到的路线(即http://localhost:4200/blog)时,没有错误提示,但我停留在MenuComponent中。同样,当我刷新时,链接保持为http://localhost:4200/blog

我想念什么吗?

P.S:如果需要任何代码,我可以编辑我的问题以显示它,请不要立即降格:)

1 个答案:

答案 0 :(得分:2)

您需要订购路线,路由器正在找到第一个匹配项,这是您的菜单组件,请尝试执行此操作。

const routes: Routes = [
  { path: 'menu', component: MenuComponent },
  { path: 'blog', component: BlogComponent },
  { path: 'team', component: TeamComponent },
  { path: '', component: MenuComponent },
  { path: '**', component: MenuComponent }
];

  

路由在配置中的顺序很重要,这是设计使然。路由器在匹配路由时会使用“先赢”策略,因此应将更具体的路由放在不那么具体的路由之上。在上面的配置中,首先列出具有静态路径的路由,然后是与默认路由匹配的空路径路由。通配符路由排在最后,因为它匹配每个URL,并且只有在没有其他路由最先匹配时才应选择通配符路由。

从有角度的网站here