Во-первых, мы используем ui-router, а route разрешает ввод данных в компоненты.
У нас есть ряд компонентов, которые наследуются от базового компонента, например,
@Component({
....
})
export class ChildComponent extends BaseComponent{
}
====================
@Component({
....
})
export class BaseComponent implements OnInit, AfterViewInit{
constructor(serviceOne: ServiceOne, serviceTwo: ServiceTwo) {
}
}
Ранее в конструкторе базовых компонентов мы вводили ряд сервисов
constructor(serviceOne: ServiceOne, serviceTwo: ServiceTwo) {
}
Это означало, что они должны были передаваться от дочерних компонентов
@Component({
....
})
export class ChildComponent extends BaseComponent{
constructor(
@Inject('dataFromRouteResolver') dataFromRouteResolver,
serviceOne: ServiceOne,
serviceTwo: serviceTwo){
super(serviceOne, serviceTwo) {
}
}
Поскольку у нас было большое количество служб и компонентов, происходящих из одного и того же базового компонента, поддерживать его стало немного трудоемким, поэтому после прочтения этого;
https://blogs.msdn.microsoft.com/premier_developer/2018/06/17/angular-how-to-simplify-components-with-typescript-inheritance/
Мы решили реализовать AppInjector и использовать injector.get (ServiceOne) для получения служб, поэтому конструктор базового компонента выглядит следующим образом;
private serviceOne: ServiceOne;
private sericeTwo: ServiceTwo;
constructor(){
const injector = AppInjector.getInjector();
this.serviceOne = injector.get(ServiceOne);
this.serviceTwo = injector.get(ServiceTwo);
}
Это прекрасно работает и действительно очищает наш производный код компонента и операторы импорта, так как нам не нужно ничего передавать конструктору базовых компонентов через super()
. Одна загвоздка, угловой универсальный перестал работать. Ничто не отображается в пользовательском интерфейсе для страниц, которые используют этот шаблон. Если я вернусь к использованию старого способа, внедряя все в производный компонент и передавая его базовому компоненту, angular universal снова работает и возвращает весь шаблон.
Я что-то упустил в цикле или порядке, с лебедкой шаблон сначала скомпилирован в angular universal?
Любая помощь приветствуется. Спасибо.