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() 注冊單一實例服務問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
AngularJS控制器controller給模型數據賦初始值的方法
這篇文章主要介紹了AngularJS控制器controller給模型數據賦初始值的方法,涉及AngularJS控制器controller簡單賦值操作實現技巧,需要的朋友可以參考下2017-01-01
Angular統一注入器unified injector簡化依賴關系管理
這篇文章主要為大家介紹了Angular統一注入器unified injector簡化依賴關系管理的使用方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
Angular.js中angular-ui-router的簡單實踐
本篇文章主要介紹了Angular.js中angular-ui-router的簡單實踐,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

