2017-02-10 69 views
2

我正在使用第三方npm軟件包。此包中包含與此代碼ApiModule未處理的Promise拒絕,未提供服務

import { PlansService } from './api/plans.service'; 
import { UsersService } from './api/users.service'; 
@NgModule({ 
    imports:  [ CommonModule, HttpModule ], 
    declarations: [], 
    exports:  [], 
    providers: [ PlansService, UsersService ] 
}) 
export class ApiModule { 
    public static forConfig(configuration: Configuration): ModuleWithProviders { 
     return { 
      ngModule: ApiModule, 
      providers: [ {provide: Configuration, useValue: configuration}] 
     } 
    } 
} 

在我Angular2的應用程序,我使用的是主AppModule + AppComponentLoginModule + LoginComponent

這是AppModule代碼:

@NgModule({ 
    bootstrap: [ App ], 
    declarations: [ 
    App, 
    ErrorComponent 
    ], 
    imports: [ // import Angular's modules 
    BrowserModule, 
    ApiModule, <<<<<<<<<<<<<<<<<<<<<<<<<< 
    FormsModule, 
    HttpModule, 
    RouterModule.forRoot(ROUTES, { useHash: true }) 
    ], 
    providers: [ 
    ENV_PROVIDERS, 
    APP_PROVIDERS 
    ] 
}) 
export class AppModule { 

正如你可以看到LoginModule由路線加載。這是LoginModule代碼:

@NgModule({ 
    declarations: [ 
    LoginComponent 
    ], 
    imports: [ 
    CommonModule, 
    ReactiveFormsModule, 
    AlertModule, 
    ApiModule, <<<<<<<<<<<<<<<<<<<<<<<<<<< 
    RouterModule.forChild(routes), 
    ] 
}) 
export default class LoginModule { 
    static routes = routes; 
} 

在我LoginComponent我想那UsersService注入的構造函數的參數。不過,它告訴我:

未處理的Promise拒絕:沒有爲UsersService提供程序!

export class LoginComponent implements OnInit { 

    constructor(private commty: UsersService) { ... } 

任何想法?

+0

你設法解決這個問題嗎? –

回答

0

如果您要將userService注入LoginModule,那麼您必須將其作爲提供程序添加到Loginmodule中。

@NgModule({ 
    declarations: [ 
    LoginComponent 
    ], 
    imports: [ 
    CommonModule, 
    ReactiveFormsModule, 
    AlertModule, 
    ApiModule, <<<<<<<<<<<<<<<<<<<<<<<<<<< 
    RouterModule.forChild(routes), 
    ], 
providers: [UsersService ] 
}) 
export default class LoginModule { 
    static routes = routes; 
} 
相關問題