Str*_*der 5 javascript angular-routing angular-providers angular
作为一个新手,我在Angular 2中设置路线时遇到了问题.虽然我很确定,但这是我非常缺乏的基础.
我想要的只是我App Component
加载并向我显示标题.在它下面,一个链接将加载contact-list component
路由器出口部分.
import { Component,OnInit } from '@angular/core';
import { Contact } from './contact';
@Component({
selector: 'app-root',
template: `
<h1>{{title}}</h1>
<a routerLink="/contact-list">Contact List</a>
<router-outlet></router-outlet>
`
})
export class AppComponent{
title = 'Welcome to my Dream App!';
}
Run Code Online (Sandbox Code Playgroud)
这里是 app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { ContactCardComponent } from './contact-card.component';
import { ContactsListComponent } from './contacts-list.component';
RouterModule.forRoot([
{
path:'',
redirectTo:'app',
pathMatch:'full',
},
{
path:'app',
component:AppComponent
},
{
path:'contact-list',
component:ContactsListComponent
},
{
path:'contact-details/:id',
component:ContactCardComponent
}
]);
@NgModule({
declarations: [
AppComponent,
ContactsListComponent,
ContactCardComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
但是说:
error_handler.js:54 EXCEPTION: Error in ./AppComponent class AppComponent - inline template:2:4 caused by: No provider for Router!
没有路由器提供商.
我究竟做错了什么 ?
更新:
如果我做 :
template: `
<h1>{{title}}</h1>
<contacts-list></contacts-list>
`
Run Code Online (Sandbox Code Playgroud)
在app.component.ts
,它工作正常.
解决方案发布后,我看到重复的行:
您应该将 RouterModule 导入到模块定义和“imports”数组中:
const ROUTES = [
// HERE ROUTES DEFINITIONS
]
@NgModule({
imports: [
RouterModule.forChild(ROUTES)
],
declarations: [],
providers: []
})
export default class YourModuleDefinition{
}
Run Code Online (Sandbox Code Playgroud)
所以你的代码应该是这样的:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { ContactCardComponent } from './contact-card.component';
import { ContactsListComponent } from './contacts-list.component';
@NgModule({
declarations: [
AppComponent,
ContactsListComponent,
ContactCardComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot([
{
path:'',
redirectTo:'app',
pathMatch:'full',
},
{
path:'app',
component:AppComponent
},
{
path:'contact-list',
component:ContactsListComponent
},
{
path:'contact-details/:id',
component:ContactCardComponent
}
]);
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
RouterModule 的 forRoot 静态类方法具有提供的配置并添加到导入数组中,为模块提供了路由关注点。
更多信息在这里: https: //angular.io/guide/ngmodule
归档时间: |
|
查看次数: |
5127 次 |
最近记录: |