【问题标题】:Dependency Injection and Singleton in Angular 4Angular 4 中的依赖注入和单例
【发布时间】:2017-11-11 23:22:48
【问题描述】:

我正在使用 typescript 开发 ionic 3 和 Angular 4,但我对需要做什么感到困惑。

让我先介绍一下我所拥有的:

我有一个具有private static _instance: ClassName 属性的类。 这是构造函数:private constructor(private platform: Platform, private file: File){} 然后我有一个静态获取实例属性

static get instance() {
    if(!ClassName._instance){
        ClassName._instance = new ClassName();
    }
    return ClassName._instance;
}

现在我的问题是,由于平台和文件服务被注入到类的构造函数中,因此在 get instance() 中不允许进行新操作。我该如何继续创建新实例或解决此问题?如果我将喷油器设为可选,可能会出现什么情况? constructor(private platform?: Platform, private file?: File){}

【问题讨论】:

  • 我可以只使用导入中的引用而不注入构造函数吗?
  • 我还没有机会尝试,但我很确定“价值提供者”就是您要寻找的 angular.io/docs/ts/latest/guide/…
  • 你不能真正对像这样的全局静态单例使用依赖注入。你的目标是什么?为什么这必须是全局静态单例?

标签: angular typescript dependency-injection ionic2 singleton


【解决方案1】:

如果有人偶然发现这个问题,那么您可以通过在 app.module.ts 中的 providers 数组中声明它来制作您的可注入单例。这在整个应用程序中维护一个实例。任何时候你有延迟加载的模块并在延迟加载的模块的提供者中声明你的注入,你正在创建注入的多个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2019-05-06
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多