在Ember(3.15.0)中,我尝试将owner注入到我的JS原生类中,看起来像这样:
component.ts
export default class ClassOne extends Component {
constructor() {
super(...arguments);
const myClass = new ClassTwo();
...
}
}
ClassTwo.ts
export default class ClassTwo {
@service() someService: ServiceType;
...
}
正因为如此,在某些服务上,我得到了预期的Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container
我见过使用getOwner(this).ownerInjection()
解决的类似问题,但这些问题都是基于由Ember.Object扩展的Class.create()
。
有什么办法吗?
提前感谢您的帮助。
1条答案
按热度按时间aemubtdh1#
在现代Ember中,实现这一点的方法是使用
setOwner
。请在此处查看它的工作情况:https://ember-twiddle.com/e6481c33c3150e3418606e79decaed78?openFiles=classes.my-class%5C.js%2C
有关
setOwner
的文档,请参阅以下网址:https://api.emberjs.com/ember/3.22/functions/@ember%2Fapplication/setOwner
这个答案应该在Ember 3.15+中有效,并且是Ember 3.23的当前版本。
顺便说一下,该错误消息实际上可以使用来自container -〉owner的更新