繁体   English   中英

Angular 6 在不使用构造函数的情况下将服务注入到类中

[英]Angular 6 injecting service into class without using the constructor

使用 Angular 6 和 Typescript 2.7。 我有一个带有构造函数的类,当我从控制器创建实例时,我将参数传递给它。 这个类还有一个需要注入的服务。 但是随后创建实例的控制器需要提供服务作为参数。 这是常见的还是有一种方法可以将服务注入类而不是构造函数。 我在其他帖子中读到构造函数应该只用于注入依赖项。

所以我有一个采用简单字符串参数的配置类。

export class Configuration{
    //public uiService: UiService;
    public configName:string;
    public configType: ConfigType;
    public shape:any;

    constructor(_configName: string, _configType: ConfigType){
        this.configName = _configName;
        this.configType = _configType;
....

我从我的控制器创建这个类的一个新实例,如下所示:

let config = new Configuration("NEWconfiguration", configType);

我有一个带有实用程序功能的公共服务,我需要在 Configuration 类中使用它。 阅读here和其他网站我看到这应该通过构造函数注入。 因此,我的配置构造函数将为服务包含一个新参数,然后控制器将注入它。 但是该服务没有在控制器中使用,所以我不想把它包含在那里。

Configuration 类中有没有办法在不使用构造函数的情况下访问服务? 或者这是不好的做法。 我想我可以在 Configuration 类中创建一个服务实例,或者使服务中的函数成为静态,但我没有使用依赖注入。 那有关系吗?

我最近遇到了一个类似的问题,我必须创建同一个类的多个实例,而 Angular DI 则无法做到这一点,默认情况下它会创建单例。 然而,类实例确实依赖于我的应用程序中的其他服务。

我解决它的方法是将依赖项注入我的控制器,并使用它们的构造函数来实例化这些类,而无需 DI。

让我知道以上是否足够,如果不够,我可以添加示例代码以提高清晰度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM