Внедрить службу в расширяемый класс Typescript

#angular #typescript #dependency-injection #nebular #ngx-admin

#angular #typescript #внедрение зависимостей #небулярный #ngx-администратор

Вопрос:

Я знаю о шаблоне внедрения DI в angular, но теперь я реализую Nebular, поэтому класс должен быть расширен, поэтому в этом случае невозможно использовать конструктор (учитывая, что он никогда не работал с супер-вызовами)

введите описание изображения здесь

Проблема в том

 this.authenticationService
  

равно нулю, несмотря на добавление в provider.

Пожалуйста, помогите мне решить эту проблему или дайте мне знать, как внедрить сервис в этом случае без конструктора.

Ответ №1:

Обновите свой конструктор до:

 export class NgxLoginCustomComponent extends NbLoginComponent {
    constructor(
        nbAuthservice: NbAuthService,
        @Inject(NB_AUTH_OPTIONS) options = {},
        cd: ChangeDetectionRef,
        router: Router,
        authService: AuthenticationService
    ) {
        super(nbAuthservice, options, cd, router, authService);
    }
}
  

Обратитесь к этой проблеме в репозитории Nebular.

Комментарии:

1. спасибо @dipen, но прочитал его там и его дубликат

Ответ №2:

вы должны ввести все параметры в дочерний конструктор, снова вызвать super() с параметрами следующим образом.

 export class ChildComponent extends ParentComponent {

   constructor(prentDepService1:any,prentDepService2:any)
   {
     super(prentDepService1,prentDepService2);
   }
}