Инъекция наследования и зависимости в Angular - PullRequest
0 голосов
/ 03 сентября 2018

Я хотел бы создать компонент (childComponent), который наследуется от другого (parentComponent).

Дело в том, что parentComponent ввел много услуг, и мы постоянно добавляем новые.

Кроме того, childComponent нужна другая служба, которой нет в parentComponent. Затем нам нужно добавить конструктор с помощью super и внедрить этот сервис.

Как можно внедрить все услуги от родителя у ребенка, но так, чтобы все они были включены одновременно? Делая это, мы избегаем изменений в childComponent, потому что, если вы добавляете новый сервис, он автоматически внедряется в его дочерний элемент.

Я пробовал это, но это не работает должным образом

import {Injector} from '@angular/core';
import {MyServiceA} from './myServiceA';
import {MyServiceB} from './myServiceB';
import {MyServiceC} from './myServiceC';

export class ParentComponent {
  protected myServiceA:MyServiceA;
  protected myServiceB:MyServiceB;
  protected myServiceC:MyServiceC;

  constructor(injector: Injector) {
    this.myServiceA = injector.get(MyServiceA);
    this.myServiceB = injector.get(MyServiceB);
    this.myServiceC = injector.get(MyServiceC);
  }
}

export ChildComponent extends ParentComponent {
  constructor(
    private anotherService: AnotherService,
    injector: Injector
  ) {
    super(injector);

    this.myServiceA.JustCallSomeMethod();
    this.myServiceB.JustCallAnotherMethod();
    this.myServiceC.JustOneMoreMethod();
  }
}
...