我有2个不同的服务,并且我希望一个服务知道另一个服务的实例,但是我需要将该实例作为单例来。 到目前为止,我读过的所有材料都是关于组件之间而不是服务之间共享数据的。
答案 0 :(得分:0)
如果在服务文件定义中使用:
@Injectable({
providedIn: 'root',
})
然后服务将成为您应用程序的单例。为了共享数据,最好使用rxjs。
答案 1 :(得分:0)
这是我对注射机制的理解。为类设置@Injectable装饰器时,Angular会尝试为当前执行链的注入器中的相应类型创建或获取实例。
service1.ts
@Injectable()
export class Service1 {
constructor(private service2:Service2) {}
getData() {
return this.service2.getData();
}
}
Service2.ts
@Injectable()
export class Service2 {
getData() {
return [
{ message: 'message1' },
{ message: 'message2' }
];
}
}