我有一个从服务器获取数据对象的服务。还有另一个类是一般的实用类。它有一个静态方法,我想使用服务实例。但由于方法是静态的,这不会起作用。示例代码:
export class DataUtil {
constructor(public core:CoreStructureService){
}
static fetchContact(id:string):ContactModel{
for(let contact of this.core.contactList){
if(contact.contactId == id)
return contact
}
}
}
这不会编译,因为for stmt中的this.core.contactList行无效。方法静态我不能把核心称为this.core。 那么我该如何解决这个问题呢。
答案 0 :(得分:1)
冒着声誉的风险,我将此作为答案发布。
请勿使用core
方法访问static
服务方法。这很糟糕。而这正是编译器打你的原因。
让您的fetchContact
方法成为实例方法而不是静态方法。
export class DataUtil {
constructor(public core:CoreStructureService){
}
fetchContact(id:string):ContactModel{
for(let contact of this.core.contactList){
if(contact.contactId == id)
return contact
}
}
}
但是......是的,你可以以非常肮脏,半工作的方式解决它。我故意不描述它。
但是,但是......但是,你正试图做一件坏事。
答案 1 :(得分:0)
如果DataUtil
是Angular注入的服务,则在销毁相应的注入器之前不会销毁它。我怀疑你因为类实例化而会遇到性能问题。如果您确实遇到性能问题,请使用常规服务尝试并回到此问题。
有关详细信息,请查看Angular docs。