Angular 2为Utilities类注入服务

时间:2017-06-19 06:27:21

标签: angular

我有一个带有一些静态方法的Utilities类。

在一种方法中,我想获得一个对象并返回其图像的安全样式。

问题是我需要使用DomSanitizer服务,我无法在静态方法中使用它。 这是代码:

export class Utilities{

   constructor(private sanitizer:DomSanitizer){
   }


   static getImageStyle(obj){
          return this.sanitizer.bypassSecurityTrustStyle(`url(data:image/jpg;base64,${obj.image})`);

   }

}

这是否需要在非静态方法中完成,每次使用此函数时都应该创建类的实例?

2 个答案:

答案 0 :(得分:2)

正如您所看到的,here静态函数不使用该类的实例。如果你在构造函数中声明一个服务它就不会在静态方法中可用。

为什么不让Utilities也成为服务并将sanitizer:DomSanitizer添加到utilies服务构造函数中呢?

答案 1 :(得分:0)

您可以将Injector作为参数传递给静态函数,然后使用injector.get()来获取DomSanitizer的实例。

https://angular.io/guide/dependency-injection#appendix-working-with-injectors-directly