Uncaught (in promise): Error: Cannot match any routes: ' '
Uncaught (in promise): Error: Cannot match any routes: ' '
我刚开始学习 Angular2 并创建了一个示例项目,其中我需要在三个页面之间进行路由。
我在 app.module.ts 中创建了一个 RouterModule 如下
@NgModule({
imports: [
BrowserModule,
HttpModule,
FormsModule,
RouterModule.forRoot([
{path:'login',component : loginComponent},
{path:'logout',component :logoutComponent},
{path:'home',component : homeComponent}
])
我的app.component.ts如下:
@Component({
selector: 'my-app', // <my-app></my-app>
providers: [Wakanda],
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
我的loginComponent.ts
@Component({
selector:'login',
template : `
<h1>Login</h1>
`
})
我的logoutComponent.ts
@Component({
selector:'logout',
template : `
<h1>Login</h1>
`
})
我的homeComponent.ts
@Component({
selector : 'home',
template : `
<h1>Login</h1>
`
})
我的app.component.html
<header>
<nav>
<div class="nav-wrapper">
<ul class="right hide-on-med-and-down">
<li>
<a routerLink ="./home">Home</a>
</li>
<li class="active">
<a routerLink="./login">LogIn</a>
</li>
<li>
<a routerLink="./logout">Log out</a>
</li>
</ul>
</div>
</nav>
</header>
<main>
<router-outlet></router-outlet>
</main>
当我编译程序时出现错误
EXCEPTION: Uncaught (in promise): Error: Cannot match any routes: ''
谁能帮我解决这个问题
提前致谢
我想出了问题,我错过了在 RouterModule 中添加默认路径
{
path:'',
redirectTo:'/login',
pathMatch:'full'
}
尝试设置一些基本全局路由,包括空路由和捕获所有路由。
举个例子app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { PageNotFoundComponent } from './page-not-found.component';
const appRoutes: Routes = [
{
path: '',
redirectTo: '/login',
pathMatch: 'full'
},
{ path: '**', component: PageNotFoundComponent }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes, { enableTracing: true })
],
exports: [
RouterModule
]
})
export class AppRoutingModule { }
这是app.module.ts
import { AppRoutingModule } from './app-routing.module';
...
@NgModule({
imports: [
...
AppRoutingModule // Make sure this one is last
],
bootstrap: [AppComponent]
})
export class AppModule { }
每当路由不匹配任何先前定义的路由并且 ''
路径匹配空路由时,PageNotFoundComponent
显示在 <router-outlet>
(它是一个基本组件)中( localhost:4200/
).
您需要在 AppModule
中最后导入 AppRoutingModule
,因为路由器会按注册顺序匹配路由。通过最后导入 'matches anything' 路由,您将确保首先检查所有其他路由。
将您的路线 enableTracing
设置为 true 以帮助在开发过程中调试导航更改。
这应该是一个很好的起点
我刚开始学习 Angular2 并创建了一个示例项目,其中我需要在三个页面之间进行路由。
我在 app.module.ts 中创建了一个 RouterModule 如下
@NgModule({
imports: [
BrowserModule,
HttpModule,
FormsModule,
RouterModule.forRoot([
{path:'login',component : loginComponent},
{path:'logout',component :logoutComponent},
{path:'home',component : homeComponent}
])
我的app.component.ts如下:
@Component({
selector: 'my-app', // <my-app></my-app>
providers: [Wakanda],
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
我的loginComponent.ts
@Component({
selector:'login',
template : `
<h1>Login</h1>
`
})
我的logoutComponent.ts
@Component({
selector:'logout',
template : `
<h1>Login</h1>
`
})
我的homeComponent.ts
@Component({
selector : 'home',
template : `
<h1>Login</h1>
`
})
我的app.component.html
<header>
<nav>
<div class="nav-wrapper">
<ul class="right hide-on-med-and-down">
<li>
<a routerLink ="./home">Home</a>
</li>
<li class="active">
<a routerLink="./login">LogIn</a>
</li>
<li>
<a routerLink="./logout">Log out</a>
</li>
</ul>
</div>
</nav>
</header>
<main>
<router-outlet></router-outlet>
</main>
当我编译程序时出现错误
EXCEPTION: Uncaught (in promise): Error: Cannot match any routes: ''
谁能帮我解决这个问题
提前致谢
我想出了问题,我错过了在 RouterModule 中添加默认路径
{
path:'',
redirectTo:'/login',
pathMatch:'full'
}
尝试设置一些基本全局路由,包括空路由和捕获所有路由。
举个例子app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { PageNotFoundComponent } from './page-not-found.component';
const appRoutes: Routes = [
{
path: '',
redirectTo: '/login',
pathMatch: 'full'
},
{ path: '**', component: PageNotFoundComponent }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes, { enableTracing: true })
],
exports: [
RouterModule
]
})
export class AppRoutingModule { }
这是app.module.ts
import { AppRoutingModule } from './app-routing.module';
...
@NgModule({
imports: [
...
AppRoutingModule // Make sure this one is last
],
bootstrap: [AppComponent]
})
export class AppModule { }
每当路由不匹配任何先前定义的路由并且 ''
路径匹配空路由时,PageNotFoundComponent
显示在 <router-outlet>
(它是一个基本组件)中( localhost:4200/
).
您需要在 AppModule
中最后导入 AppRoutingModule
,因为路由器会按注册顺序匹配路由。通过最后导入 'matches anything' 路由,您将确保首先检查所有其他路由。
将您的路线 enableTracing
设置为 true 以帮助在开发过程中调试导航更改。
这应该是一个很好的起点