Angular6使用forRoot() 注册单一实例服务问题
时间:2021-07-16 10:43:09|栏目:AngularJS|点击: 次
假如我们有一个shareModule来存放公用的组件(Component)、指令(Directive)、管道(Pipe)、服务(Service),为避免各个子模块引用shareModule时造成App中有多个一样的单一实例服务的问题。我们可以在shareModule中建立同意的App层级的服务。
ShareModule
import { NgModule, ModuleWithProviders } from '@angular/core';
@NgModule({
imports: [
HttpModule,
JsonpModule,
...
],
declarations: [
ShowItDirective,
...
],
exports: [
ShowItDirective,
...
]
})
export class ShareModule{
// 给shareModule添加forRoot
static forRoot(): ModuleWithProviders {
return {
ngModule: ShareModule,
providers: [
MessageService,
NotifyService,
... any service
],
};
}
}
AppModule
@NgModule({
declarations: [
AppComponent,
],
imports: [
// 使用
ShareModule.forRoot(),
],
providers: [
],
bootstrap: [AppComponent]
})
export class AppModule { }
这样ShareModule中每一个service都只在app中注册了一个实例,也避免了每次使用service都要provider的问题。
ERROR NullInjectorError: StaticInjectorError(AppModule)[SurveyComponent -> PermissionCheckerService]:
NullInjectorError: No provider for PermissionCheckerService!
总结
栏 目:AngularJS
下一篇:angular2路由切换改变页面title的示例代码
本文标题:Angular6使用forRoot() 注册单一实例服务问题
本文地址:http://www.codeinn.net/misctech/158009.html






