new app.module.ts :
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { APP_BASE_HREF } from '@angular/common';
import { RouterModule } from '@angular/router';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { routes } from './app.routes';
import { AboutModule } from './+about/about.module';
import { HomeModule } from './+home/home.module';
import { SharedModule } from './shared/shared.module';
@NgModule({
imports: [BrowserModule, HttpModule, RouterModule.forRoot(routes), AboutModule, HomeModule, SharedModule.forRoot()],
declarations: [AppComponent],
providers: [{
provide: APP_BASE_HREF,
useValue: '<%= APP_BASE %>'
}],
bootstrap: [AppComponent]
})
export class AppModule { }
旧AppComponent :
import { Component } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { Config, NavbarComponent, ToolbarComponent } from './shared/index';
/**
* This class represents the main application component. Within the @Routes annotation is the configuration of the
* applications routes, configuring the paths for the lazy loaded components (HomeComponent, AboutComponent).
*/
@Component({
moduleId: module.id,
selector: 'sd-app',
templateUrl: 'app.component.html',
directives: [ROUTER_DIRECTIVES, NavbarComponent, ToolbarComponent]
})
export class AppComponent {
constructor() {
console.log('Environment config', Config);
}
}
在本文(https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html)中,您可以阅读第5章。清理:
对于RC5,可以将组件,指令和管道保留在@Component元数据的指令和管道属性中。 实际上,我们会自动将它们提升(添加)到它们所属的NgModule 。
我必须在此处删除(AppComponent)?
或:
我需要从AppComponent转移到AppModule吗?
编辑:您可以在此种子中看到的所有文件(组件,配置等等):https://github.com/mgechev/angular2-seed
答案 0 :(得分:1)
由于 RC.5 ,您不应将任何组件/管道/指令放入@Component中。每个人都需要添加到模块的declarations
数组中。
因此,将 AppComponent 更改为:
@Component({
moduleId: module.id,
selector: 'sd-app',
templateUrl: 'app.component.html'
})
您的 AppModule 进入:
@NgModule({
imports: [BrowserModule, HttpModule, RouterModule.forRoot(routes), AboutModule, HomeModule, SharedModule.forRoot()],
declarations: [AppComponent, NavbarComponent, ToolbarComponent],
providers: [{
provide: APP_BASE_HREF,
useValue: '<%= APP_BASE %>'
}],
bootstrap: [AppComponent]
})
模块声明数组中的每个组件/指令/管道对于属于此模块的每个组件都可用,因此您不必担心@Component指令数组了。
答案 1 :(得分:0)
您可以从AppComponent中删除directives
。
您可以将它们添加到NgModule&#39; declarations
。
不再需要ROUTER_DIRECTIVES
了!