Angular провайдер - внедрить многопараметрический класс - PullRequest
0 голосов
/ 04 апреля 2020

Я пытался создавать экземпляры служб, передавая такие параметры, как @Inject('controller'). И я связываю свои услуги с NgModule. Как показано ниже -

providers: [
    IBillService,
    { provide: 'controller', useValue: 'xyz' }
]

, но возникает проблема Ожидается присвоение свойства , когда я пытаюсь связать несколько служб с одинаковым именем @Inject name controller, но разными значениями. Я попробовал ниже -

providers: [
    { provide: IBillService,  { provide: 'controller', useValue: 'xyz' } },
    { provide: RService,  { provide: 'controller', useValue: 'gmr' } },
]

Поскольку значение @Inject привязано к конкретной службе, то имеет смысл связать их с этой конкретной provider.

Моими службами:

@Injectable()
export class IBillService extends CommonService {
   constructor(
       httpClient: HttpClient,
       @Inject('controller') controller: IBController) {
      super(controller, httpClient);
   }
}

export class RService extends IBillService {
      constructor(
        httpClient: HttpClient,
        @Inject('controller') controller: IBController) {
        super(httpClient, controller);
      }
}

Здесь CommonService - это базовый класс, а IBController - это Enum. Вопрос в том, могу ли я предоставить примитивные значения разных классов с одинаковыми именами. Или мне просто нужно изменить название этих примитивных значений ;

...