首页 > 解决方案 > 有没有办法让组件在角度 2+ 中成为单例?

问题描述

我需要将组件制作为单吨,因此我可以在应用程序的任何地方使用它而无需再次初始化它。

怎么能做到这一点?

标签: angular

解决方案


您需要使用静态字段来创建它,在构造函数中为其分配第一个实例,如果它已经分配则抛出(有人试图实例化第二个副本)。然后您可以访问静态字段以在任何地方访问实例。大致是这样的:

export class MyClass {
    constructor() {
        if (MyClass.instance) {
            throw('Already instantiated');
        }

        MyClass.instance = this;
    }

    static instance: MyClass;
}

然后在您可以访问的任何其他组件/服务中MyClass.instance


推荐阅读