angular 12 singleton service
angular 12 中单例 Service 的使用
service 写法
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class SearchService {
}
providedIn: 'root'
表明当前 service
为全局有效的单例模式
注册 service
必须在 AppModule
注册,或者 在任意一个 module 中注册。
但是需要注意,这个 module 只能导入一次,
例如:有一个 module ThemeModule
为公共核心组件,很多其他 module 都会依赖她,
导致很多地方都使用了
进行导入
而 单例 service SearchService
是注册在 ThemeModule
中的,
这样就会导致单例不生效,每一个 SearchService
都不同,
这是可以给 ThemeModule
增加一个方法 forRoot()
export class ThemeModule {
static forRoot(): ModuleWithProviders<ThemeModule> {
return {
ngModule: ThemeModule,
providers: [
SearchService,
]
};
}
}
把 SearchService
仅注册到 forRoot()
中。
然后在 AppModule
中导入 ThemeModule
这样就能生效
转载请保留原文链接: https://zodream.cn/blog/id/209.html