2016-08-22 65 views
1

我正在嘗試使用Ngmodule和進口,所以我搬了這條線: (from heroes.component.ts文件) 從'./hero'導入{Hero};angular2,英雄之旅,ngmodule進口

到app.module.ts文件:

import { Hero } from './hero'; 
    @NgModule({ 
     imports: [ 
     BrowserModule, 
     FormsModule, 
     routing, 
     Hero 
     ], 

,但我得到這個錯誤:

[0] app/heroes.component.ts(20,11): error TS2304: Cannot find name 'Hero' 

有可能在部件僅僅是基本的導入讓: 進口{組件,的OnInit } from @ angular/core'; 並將所有其餘的導入移動到NgModule?還是有我的限制?

回答

1

是的,NgModule內部應該包含什麼限制。本質上,一個模塊將一組功能組合在一起,您只能將組件,指令,服務和其他模塊添加到NgModule中,您的英雄導入應位於組件內而不是模塊內。

import { Hero } from './hero'; 
//This import should stay inside app.component.ts 

所以,你的文件將

//app.component.ts 
import { Component } from '@angular/core'; 

import { Hero } from './hero'; 

@component({ 
    selector: 'my-app', 
    template: `<p>A template goes in here</p>` 
}) 
export class AppComponent { 
    public hero: Hero; 
} 

和:

//app.module.ts 
import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 

import { AppComponent } from './app.component'; 

@NgModule({ 
    imports: [ BrowserModule ], //other modules you require 
    declarations: [ AppComponent ], //declares components and directives 
    bootstrap: [ AppComponent ] //your root component 
}) 
export class AppModule { } 
+0

謝謝;有一個疑問,服務去'提供者:'在NgModule;從組件導入行移動到app.module.ts和@ Component裝飾器的指令到NgModule中的'declarations:',但是wha正好到達NgModule中的'imports:'?從來沒有個人成分? – stackdave

+0

當您移動服務時,您必須在組件中保留文件服務的導入行?並在NgModule文件中;進口線和「提供者:」? – stackdave

+0

不,在「導入」中,您只導入其他模塊,如BrowserModule或您自己的模塊。 https://angular.io/docs/ts/latest/guide/ngmodule.html –

1

之所以屬性格式在NgModule「進口」不是進口組件,但導入另一模塊(文件,其中另一個NgModules,由另一個組件分組)。

組件可以在'imports:'屬性中移動到Ngmodule: import':import {} from'..';和'指令'行

服務可以在'providers:'屬性 中移動到NgModule,但它的差別在於它必須保留在組件中:import {} from'..';

+0

優秀!現在你已經解決了你自己的問題。保持學習! –

相關問題