使用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 DI则无法实现,默认情况下,Angular DI会创建单例。但是,类实例确实依赖于我的应用程序中的其他服务。
我解决的方法是将依赖项注入到控制器中,并使用不带DI的构造函数实例化类。
让我知道以上内容是否足够,否则,我可以添加示例代码以提高清晰度。