我正在学习带有类型记录的DI (我在示例中使用了注射器包)。
如何告诉DI容器我想要:
的Bar实例。
在下面的示例中,tsyringe创建两个Bar实例(一个在Foo中,一个用于FooBar)。
it("injects one Bar instance", () => {
@injectable()
class Bar {
constructor() {}
x = 1;
}
@injectable()
class Foo {
constructor(public myBar: Bar) {}
}
@injectable()
class FooBar {
constructor(public bar: Bar, public foo: Foo) {}
}
const fooBar = container.resolve(FooBar);
fooBar.bar.x = 2;
expect(fooBar.foo.myBar).toBe(2); // throws error (is 1)
});发布于 2020-07-10 08:57:40
对于注射器,必须使用@作用域装饰器:
@scoped(Lifecycle.ResolutionScoped)
class Bar {
constructor() {}
}https://stackoverflow.com/questions/62817233
复制相似问题