Angular2 - 在超类中添加服务,并使其在所有子类中工作



我有三个(或更多(类,具有以下继承

  • 类 A(抽象类(
  • B 类扩展 A
  • C 类扩展 B

我想在类 A 中添加一个服务来实现一个使用通知的函数,如何在不添加任何子类的情况下执行此操作?

我的解决方案类似于这个草案,但我会避免在子类中导入服务:

export class abstract A {
constructor(protected service: NewService) {}
}
export class B extends A {
constructor(protected service: NewService) {
super();
}
}
export class C extends B {
constructor(protected service: NewService) {
super();
}
}

我认为唯一(通用(的方法是将注入器传递到抽象类中。然后,您可以将任意数量的服务注入其中。之后,您应该将注入器传递给每个后代类的 super(( 调用。

import { Injector } from '@angular/core';
export abstract class Base {
private serviceA: ServiceA;
private serviceB: ServiceB;
constructor(
injector: Injector,
) {
this.serviceA = injector.get(ServiceA);
this.serviceB = injector.get(ServiceB);
}
}
export class Child extends Base {
constructor(
private injector: Injector,
) {
super(injector);
}
}

最新更新