首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在角2中没有路由器的提供者

在角2中没有路由器的提供者
EN

Stack Overflow用户
提问于 2017-09-08 07:54:48
回答 1查看 6.7K关注 0票数 5

作为一个新手,我在第二个角度设置路线有问题。虽然我很确定,但这是非常基本的东西,我错过了。

我想要的只是我的App Component加载并显示标题。就在它的下方,一个在路由器出口部分加载contact-list component的链接.

代码语言:javascript
复制
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!';
}

这是app.module.ts

代码语言:javascript
复制
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 { }

而是说:

error_handler.js:54 EXCEPTION: Error in ./AppComponent class AppComponent - inline template:2:4 caused by: No provider for Router!

没有路由器的提供者。

我做错什么了?

更新:

如果我这样做了:

代码语言:javascript
复制
  template: `
    <h1>{{title}}</h1>
    <contacts-list></contacts-list>
    `

app.component.ts中,它工作得很好。

在发布了解决方案之后,我看到了重复的几行:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-08 08:01:10

您应该将RouterModule导入到模块定义和“导入”数组中:

代码语言:javascript
复制
const ROUTES = [
  // HERE ROUTES DEFINITIONS
]

@NgModule({
    imports: [
        RouterModule.forChild(ROUTES)
    ],
    declarations: [],
    providers: []
})
export default class YourModuleDefinition{

}

所以您的代码应该是这样的:

代码语言:javascript
复制
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 { }

带有提供的配置并添加到imports数组中的RouterModule的RouterModule静态类方法为模块提供了路由问题。

更多信息在这里:https://angular.io/guide/ngmodule

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46111428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档