例如,人们可能想要实现类似命令模式的东西。使用
Injector.get
仍然会返回单例实例,因此这不起作用。
这是每次都想实例化新的命令类:
@Injectable()
export class EditCommand{
constructor(private someService: SomeService, private someOtherService: SomeOtherService)
{
}
}
在您想要实例化新命令实例的组件(或服务)上,每次您可以使用以下代码创建类似工厂的内容:
import { Component, Injector, inject } from '@angular/core';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
})
export class MyComponent{
private injector = inject(Injector);
constructor() {
}
onSomeButtonClicked(){
const factory = Injector.create({ providers: [EditCommand], parent: this.injector });
const command = factory.get(EditCommand);
}
}