注入新实例Angular

时间:2018-08-28 14:03:05

标签: angular

我有一个简单的工厂和一个注入令牌,可以在Angular依赖注入中使用它,如下所示:

const TOKEN = new InjectionToken<EventEmitter<MyType>>("Create p");

和工厂:

const createEventEmitter = () => new EventEmitter<MyType>();

现在我像这样在我的模块中提供它:

providers: [
 {provide: TOKEN, useFactory: createEventEmitter}]

然后将其注入一些构造函数中:

constructor(@Inject(TOKEN) emitter: EventEmitter<MyType>)

这有效。但是,我确实有一个单例实例。

如果我想像工厂模式那样执行该操作,以便每当注入引用时都得到一个新实例,该怎么办?这可能吗?有点像Spring的@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE).

奖金问题:是否可以创建一个注入器令牌来注入具有泛型类型参数的类的新实例?因此,一个注入器令牌可注入所有EventEmitter。

1 个答案:

答案 0 :(得分:1)

如果您在app.module上提供该模块,则其中有一个要提供的模块,它将是一个单例,但是如果您提供在自定义组件中,则您将拥有相同数量的组件和注入类的实例。

@Component({
  selector: 'custom',
  templateUrl: './custom.component.html',
  styleUrls: ['./custom.component.scss'],
  provider:[{provide: TOKEN, useFactory: createEventEmitter}]
})

如果您有子模块,也可以这样做。