У меня есть два TS хранилище классовУгловое 2 DI и машинопись Наследование
1) InvoiceRepository 2) SalesReceiptRepositroy
Вот как там конструктор выглядит
InvoiceRepository
export class InvoiceRepository extends RepositoryBase {
constructor(
protected http: Http,
protected toasterService: ToasterService,
protected progressbarService: ProgressBarService,
invocieType: InvoiceType = InvoiceType.Invoice,
@Inject('ApiEndpoint') protected apiEndpoint: string) {
super(toasterService, progressbarService);
console.log(invocieType);
}
}
SalesReceiptRepositroy
export class SalesReceiptsRepository extends InvoiceRepository {
constructor(http: Http,
toasterService: ToasterService,
progressbarService: ProgressBarService,
@Inject('ApiEndpoint') apiEndpoint: string) {
super(http, toasterService, progressbarService, InvoiceType.InvoiceCC, apiEndpoint);
}
}
Вопросы:
1) Я унаследовавшие SalesReceiptRepository
от InvoiceRepository
, я должен пройти все необходимые параметры для super
класса constructor
. Угловая отдельно inject
зависимости от базового класса и производного класса, когда SalesReceiptRepoistory
объект get создан? ИЛИ Базовый класс будет извлекаться из его производного класса? Немного смущает, пожалуйста, кратко объяснить, как эти две работы вместе
2) Если вы посмотрите на InvocieRepository
конструктор 3 parameter
, InvoiceType
является enum
и я недобросовестный его первое значение. Но в заявлении console
это значение регистрации api/
, которое на самом деле является значением 4-го числа parameter
. Итак, что он делает, установив для третьего и четвертого значений параметра значение api/
, где 3-й должен быть 1
. Это происходит только тогда, когда InvoiceRepository
объект get'screated, однако он хорошо себя ведет, когда создается объект get's SalesReceipRepository
. Зачем?
2) Почему вы добавили этот параметр в первую очередь? Вы предоставили 'обеспечить (InvoiceType: {useValue: InvoiceType.SomeItem})' где-нибудь? –
Нет, я хочу, чтобы оно было настроено на какое-то значение по умолчанию, когда экземпляр InvoiceRepository создал DI. Однако в случае «SalesReceiptRepository» я вручную вызываю конструктор «базовый класс», поэтому он работает правильно. –
Я вижу. Я думаю, вам нужно добавить '?' В конец ('invocieType ?: InvoiceType = ...') имени параметра, чтобы пометить его как необязательный. Также может потребоваться переместить необязательные параметры в конце списка параметров (не уверен в этом). –