элементе, директива помощник инжектит основную директиву просто в конструкторе:
constructor(private parentDirective: ParentDirective){}
всё было замечательно до того момента когда мне не потребовалось несколько реализаций родителя, сделал я класс, задекарировал, отнаследовал старый класс и сделал новый класс, поменял в помощнике на AbstractParentDirective и всё сломалось, ошибка `Cannot read property 'context' of null` которая чет даже не ищется, место ошибки где-то в view коде ангуляра. Вкостылил две реализации через Optional() и работает. Собственно как мне заинжектить базовый класс и чтобы всё работало? @Injectable не пробовал, раньше же как-то без него всё работало
Можно пойти несколькими путями. Добавить в провайдер для абстрактного класса @Directive({ providers: [ { provide: AbstractDirective, useExisting: forwardRef(() => ParentDirective) } ] }) class ParentDirective extends AbstractDirective {} Тогда в дочерней директиве constructor(parent: AbstractDirective) {} Либо можно использовать флаг @Optional constructor( @Optional() a: AParentDirective, @Optional() B: BParentDirective ) {}
Обсуждают сегодня