在Angular 5中保留类的实例
真的有可能做这样的事情吗在Angular 5中保留类的实例,angular,typescript,angular5,Angular,Typescript,Angular5,真的有可能做这样的事情吗 import {Injectable} from '@angular/core'; @Injectable() export class UbiSharedService { private _ubiData: object = {}; private $$instance: UbiSharedService; constructor() { } public setData(key: string, data: an
import {Injectable} from '@angular/core';
@Injectable()
export class UbiSharedService {
private _ubiData: object = {};
private $$instance: UbiSharedService;
constructor() {
}
public setData(key: string, data: any) {
this._ubiData[key] = data;
}
public getData(key: string): any {
return this._ubiData[key];
}
public popData(key: string): any {
return delete this._ubiData[key];
}
public getInstance(): UbiSharedService {
if (!!this.$$instance && this.$$instance instanceof UbiSharedService) {
//NOOP
}
else {
this.$$instance = new UbiSharedService();
}
return this.$$instance;
}
}
摆脱
$$instance
,而是使用构造函数将服务注入到需要它的组件中
constructor(private productService: ProductService,
private productParameterService: ProductParameterService) { }
然后组件可以使用
productService
或productParameterService
属性访问服务方法。摆脱$$实例
,而是使用构造函数将服务注入到需要它的组件中
constructor(private productService: ProductService,
private productParameterService: ProductParameterService) { }
然后组件可以使用
productService
或productParameterService
属性访问服务方法。请参阅Angular的以下文档,了解如何使用服务在不相关组件之间共享数据:
通过将服务添加到组件的构造函数中,可以在组件中注入服务:
constructor(
private ubiSharedService: UbiSharedService
) {
// You can now call in the methods of ubiSharedService
// e.g.: this.ubiSharedService.setData('key', { value: 'Value' });
}
请参阅Angular的以下文档,了解如何使用服务在不相关的组件之间共享数据: 通过将服务添加到组件的构造函数中,可以在组件中注入服务:
constructor(
private ubiSharedService: UbiSharedService
) {
// You can now call in the methods of ubiSharedService
// e.g.: this.ubiSharedService.setData('key', { value: 'Value' });
}
你想达到什么目标?注入服务的标准行为将它们作为单例注入。单例的状态将在应用程序的整个生命周期内保持不变。对于角度应用程序,只要浏览器窗口打开,它就会保持不变。我正在尝试从多个组件读取/写入数据。但是,我在从组件中找到使用此方法的方法时遇到了一些问题…因此您尝试在组件中使用服务并调用此服务的方法,例如setData或getData?我想从A.component调用setData并从B.component读取相同的数据:)您试图实现什么?注入服务的标准行为将它们作为单例注入。单例的状态将在应用程序的整个生命周期内保持不变。对于角度应用程序,只要浏览器窗口打开,它就会保持不变。我正在尝试从多个组件读取/写入数据。但是我在从组件中找到使用此方法的方法时遇到了一些问题…因此您尝试在组件中使用服务并调用此服务的方法,例如setData或getData?我想从A.component调用setData并从B.component读取相同的数据:)这是我的相同建议。。。只是用一个更好的例子来展示你的特定场景。是的,我理解。事实上,我会选择你的答案,因为你先回答:)@DeborahK请为其他来这里的人更新你的答案。包括到singleton服务文档页面的链接。这也是我的建议。。。只是用一个更好的例子来展示你的特定场景。是的,我理解。事实上,我会选择你的答案,因为你先回答:)@DeborahK请为其他来这里的人更新你的答案。包括到singleton services文档页面的链接。