Angular6使用forRoot() 注册单一实例服务问题
- 作者: 就是冰冰咯
- 来源: 51数据库
- 2020-08-10
这篇文章主要介绍了Angular6使用forRoot() 注册单一实例服务问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
假如我们有一个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!
总结
以上所述是小编给大家介绍的Angular6使用forRoot() 注册单一实例服务问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
推荐阅读
热点文章
Angular中响应式表单的三种更新值方法详析
7
Angularjs实现下拉框联动的示例代码
7
详解AngularJS跨页面传值(ui-router)
2
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
3
angular2路由切换改变页面title的示例代码
4
Angular2 组件间通过@Input @Output通讯示例
5
Angularjs中ng-repeat的简单实例
3
AngularJS 中ui-view传参的实例详解
4
浅谈Angular路由守卫
4
详解基于Angular4+ server render(服务端渲染)开发教程
4
