Angular2& RC5:我的AppComponent现在应该怎么样?

时间:2016-08-17 13:10:54

标签: angular

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

2 个答案:

答案 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了!