![](/img/trans.png)
[英]Angular 8 karma test a service without injecting all service in the constructor
[英]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.