我有一个带有一些静态方法的Utilities类。
在一种方法中,我想获得一个对象并返回其图像的安全样式。
问题是我需要使用DomSanitizer服务,我无法在静态方法中使用它。 这是代码:
export class Utilities{
constructor(private sanitizer:DomSanitizer){
}
static getImageStyle(obj){
return this.sanitizer.bypassSecurityTrustStyle(`url(data:image/jpg;base64,${obj.image})`);
}
}
这是否需要在非静态方法中完成,每次使用此函数时都应该创建类的实例?
答案 0 :(得分:2)
正如您所看到的,here静态函数不使用该类的实例。如果你在构造函数中声明一个服务它就不会在静态方法中可用。
为什么不让Utilities
也成为服务并将sanitizer:DomSanitizer
添加到utilies服务构造函数中呢?
答案 1 :(得分:0)
您可以将Injector作为参数传递给静态函数,然后使用injector.get()来获取DomSanitizer的实例。
https://angular.io/guide/dependency-injection#appendix-working-with-injectors-directly