我在网上进行了一些研究,发现我面临的问题是创建了多个服务实例,而我希望避免这种情况。请问有人能看一下我的代码并指出需要做出的改变吗?
第二个服务使用了被复制的主服务。
export class SecondaryService {
constructor(private primarySvc: IPrimaryService){
this.primarySvc.someSubject.subscribe(() => {});
}
}
主要服务(正在被复制的服务)
export class PrimaryService {
someSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
constructor(){}
}
首要服务提供商
@Injectable()
export class PrimaryServiceProvider extends PrimaryService {
constructor(){
super();
}
}
次要服务提供商
@Injectable()
export class SecondaryServiceProvider extends SecondaryService {
constructor(private PrimaryProvider: PrimaryServiceProvider){
super(PrimaryProvider);
}
}
app.module.ts
@NgModule({
declaration: [SecondaryComponent],
exports: [SecondaryComponent],
imports: [BrowserModule],
providers: [SecondaryServiceProvider, PrimaryServiceProvider ]
})
export class SearchModule{}
现在我正在尝试在本地环境中使用我制作的组件,大致如下:
app.module.ts
@NgModule({
declaration: [AppComponent, HomeComponent],
imports: [SearchModule, BrowserModule],
providers: [PrimaryServiceProvider, SecondaryServiceProvider],
bootstrap: [AppComponent]
})
export class AppModule{}
home.component.ts
export class HomeComponent {
constructor( primarySvc: PrimaryServiceProvider,
secondarySvc: SecondaryServiceProvider) {
this.primarySvc.someSubject.next(false);
}
}
现在我确定主服务有两个实例,因为 someSubject
不同步,并且 SecondarySvc 中的订阅没有从 home.component.ts 获取任何值。
请告诉我需要在哪里进行更改。
谢谢!