以角度2导入语句

时间:2017-05-19 12:51:56

标签: angular typescript import ecmascript-6

如果我在应用模块中导入,例如ElementRef和导入服务时,服务使用ElementRef,我是否必须在服务中再次导入ElementRef?

或者更一般:我可以,例如在app.module中,从angular / core导入所有需要的元素,并使它们可用于所有指令,管道和服务,这些也在app.module中导入。

2 个答案:

答案 0 :(得分:4)

您需要在需要使用它们的地方导入它们。

因此,在AppModule中,您将导入它们以将其添加到providersdeclarationsimports等。

在您的组件,指令,管道,模块,服务等中。如果您需要使用它们,则需要再次导入它们。

示例:

<强>的AppModule

import { HttpModule } from '@angular/http';

@NgModule({
    bootstrap: [AppComponent],
    declarations: [
        AppComponent
    ],
    imports: [ 
        BrowserModule,
        FormsModule,
        HttpModule
    ]
})
export class AppModule {
    constructor() {
    }
}

<强> UserModule

这里我需要Http来执行一些http调用,所以我必须导入它......

import { HttpModule } from '@angular/http';

@NgModule({
    imports: [
       HttpModule
    ],
    declarations: [],
    exports: [
        HttpModule
    ]
})
export class UserModule{
}

答案 1 :(得分:-1)

导入只会在导入它的类中可见/使用。

 do I have to import ElementRef again in the service

是的,您必须导入它,因为服务类将无法访问app.module中的导入。

can I, e.g. in app.module, import all the needed elements from angular/core and make them available to all the directives, pipes and services, which are also imported in app.module

这不可能,因为只有app.module才能使用其导入