Angular6使用forRoot() 注册单一实例服务问题
程序员文章站
2022-06-25 12:55:16
假如我们有一个sharemodule来存放公用的组件(component)、指令(directive)、管道(pipe)、服务(service),为避免各个子模块引用sha...
假如我们有一个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() 注册单一实例服务问题,希望对大家有所帮助
上一篇: Jquery属性的获取/设置及样式添加/删除操作技巧分析
下一篇: Vue实现跑马灯效果