Я обновил приложение angular 8 до приложения agular 9. В одной из моих директив я получаю доступ к компоненту через атрибут _data viewcontainer. Кажется, этого больше нет в angular 9. Как я могу получить доступ к компоненту в angular 9?
У меня есть несколько входов с viewchild 'errorContainer'. Все они наследуются от Abstractinput. Таким образом, когда у меня есть formcontroll, через директиву я могу помещать ошибки в компоненты.
@Directive({
selector: '[formControl], [formControlName]'
})
export class DefaultControlErrorDirective implements OnDestroy, OnInit {
constructor(private vcr: ViewContainerRef) {
const component = this.vcr['_data'].componentView.component
}
}
Абстрактный ввод:
@Component({
template: ``
})
export class InputAbstractComponent implements ControlValueAccessor, OnInit {
@ViewChild('errorContainer', {read: ViewContainerRef}) errorContainerRef: ViewContainerRef;
}
Реализация абстрактного ввода
@Component({
selector: 'tg-form-input',
templateUrl: 'input.html',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => InputComponent),
multi: true
}
]
})
export class InputComponent extends InputAbstractComponent implements AfterViewInit {
}
Ввод. html
<div #errorContainer></div>