请教angular路由提示 Cannot match any routes. URL Segment: 'login'问题

嘉恩Gavin
  • 98

我用angular-cli(1.1.3)new出了一个project,然后进行路由配置
1、目录结构是

clipboard.png

2、在login相关子路由配置
login-routing.module.ts中

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from './login/login.component';

const routes: Routes = [
  {
    path: 'login',
    component: LoginComponent,
  }
];

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

login.module.ts中

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

3.在app文件中的配置
app-routing.module.ts中

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';

const routes: Routes = [
  {
    path: '',
    redirectTo: '/login',
    pathMatch: 'full'
  }
];

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

在app.module.ts中

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { MdSidenavModule } from '@angular/material';

import { AppComponent } from './app.component';
import { CoreModule } from './core/core.module';
import { AppRoutingModule } from './app-routing.module';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    MdSidenavModule,
    CoreModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我已经引入相关子路由,子路由和组件页面已经对应,为什么还会报这个错误呢?刚入angular4请教一下各位了

在app.component.html中

<md-sidenav-container>
  <md-sidenav #sidenav mode="side"> 
    <!-- mode有三种over[默认](侧栏在main上面)side(侧栏会吧main挤过去)push(既在main之上又会挤过去main) -->
    <app-sidebar></app-sidebar>
  </md-sidenav>
  <div class="site">
    <header>
      <app-header (toggle)="sidenav.toggle()"></app-header>
    </header>
    <main>
      <router-outlet></router-outlet>
      
    </main>
    <footer>
      <app-footer></app-footer>
    </footer>
  </div>
</md-sidenav-container>

但是用Chrome的Augury调试时,组件树中没有这个login组件

clipboard.png

回复
阅读 8.2k
4 个回答
✓ 已被采纳

login-routing.module.ts中:

const routes: Routes = [
  {
    path: '',
    component: LoginComponent,
  }
];

app-routing.module.ts

const routes: Routes = [
  {
    path: '',
    redirectTo: '/login',
    pathMatch: 'full'
  },
  {
    path:'login',
    loadChildren:'./login/login.module#LoginModule'
  }
];

我忘记在app.module.ts中imports引入了loginModule。
谢谢大家的解答

冠军
  • 5
新手上路,请多包涵

/login
路径里不能以 / 开始吧。

新竹野猴子
  • 5
新手上路,请多包涵

大佬,源码能给份我么。。。我这为啥是编译后的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏