2017-07-21 27 views
0

我有一個程序包依賴項中的提供程序模塊。但是,當我嘗試在我的app.module使用它我得到:提供程序作爲node_modules的程序包依賴項的模塊

Error: No provider for EnvService! 

/node_modules/common-components/env.module:

import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 

import { WindowService } from './window.service'; 
import { EnvService } from './env.service'; 

export function windowFactory() { 
    return window; 
} 

@NgModule({ 
    imports: [ 
    CommonModule 
    ] 
}) 
export class EnvModule { 
    static forRoot(): ModuleWithProviders { 
    return { 
     ngModule: EnvModule, 
     providers: [ 
     EnvService, 
     { provide: WindowService, useFactory: windowFactory } 
     ] 
    } 
    } 
} 

app.module.ts

import { EnvModule } from 'common-components'; 

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

回答

0

在包含該模塊的提供商EnvService以及:

import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 

import { WindowService } from './window.service'; 
import { EnvService } from './env.service'; 

export function windowFactory() { 
    return window; 
} 

@NgModule({ 
    imports: [ 
    CommonModule 
    ], 
    providers: [ 
    EnvService 
    ] 
}) 
export class EnvModule { 
    static forRoot(): ModuleWithProviders { 
    return { 
     ngModule: EnvModule, 
     providers: [ 
     EnvService, 
     { provide: WindowService, useFactory: windowFactory } 
     ] 
    } 
    } 
} 
+0

我做了你的建議,但我仍然得到同樣的錯誤。 –

+0

你可以發佈EnvService嗎?它是用@Injectable()裝飾的嗎? – 0mpurdy

+0

是的,我擁有它: @Injectable() export class EnvService {} –

相關問題