我正在使用第三方npm包。此程序包包含ApiModule
,其代码如下:
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
+ AppComponent
和LoginModule
+ 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
作为构造函数参数注入。然而,它告诉我:
未处理的承诺拒绝:没有UserService的提供商!
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;
}