如何每次在 Angular 中创建一个全新的服务实例?

问题描述 投票:0回答:1

例如,人们可能想要实现类似命令模式的东西。使用

Injector.get
仍然会返回单例实例,因此这不起作用。

angular
1个回答
0
投票

这是每次都想实例化新的命令类:


@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);
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.