Angular 6将服务注入类而不使用构造函数

问题描述 投票:0回答:1

使用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类中需要使用的具有实用程序功能的公共服务。在这里和其他站点上阅读时,我看到这应该通过构造函数注入。因此,然后我的配置构造函数将为服务包含一个新参数,然后控制器将其注入。但是该服务未在控制器中使用,因此我不想在其中包含它。

Configuration类中是否有一种无需使用构造函数即可访问服务的方法?还是这是不好的做法。我想我可以在Configuration类中创建服务的实例,或者将服务中的功能设为静态,但是我没有使用依赖项注入。这有关系吗?

angular typescript
1个回答
0
投票

最近我遇到了类似的问题,我不得不创建同一类的多个实例,而Angular DI则无法实现,默认情况下,Angular DI会创建单例。但是,类实例确实依赖于我的应用程序中的其他服务。

我解决的方法是将依赖项注入到控制器中,并使用不带DI的构造函数实例化类。

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

© www.soinside.com 2019 - 2024. All rights reserved.