<app-filter *ngFor="let item of selectedFilters">
<app-report-filters-selected-component [selectedFilters]="item"></app-report-filters-selected-component>
</app-filter>
</form>
вот код app-report-filters-selected-component (скрин)
этот компонент нужен для того, что бы в нем динамически создавать компонент который работает непосреддственно с формой (extends ControlValueAccessor) - допустим CustomTextareaComp
CustomTextareaComp имеет такой конструктор
constructor(
@Optional() @Host() @SkipSelf() private controlContainer: ControlContainer
) {
super();
}
Так вот, если создавать динамически CustomTextareaComp - то controlContainer равен почему то null
Если же просто в темплейте компонента app-report-filters-selected-component создать компонент CustomTextareaComp <app-custom-textarea-comp></app-custom-textarea-comp> - то controlContainer нормальный и все работает ( данные записываются в форму parent comp)
То есть проблема возникает именно из-за динамического создания компонента через резолвер, функция:
private createComponent() {
const ngControl = this.injector.get(NgControl);
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponent);
const componentRef = this.viewContainerRef.createComponent(componentFactory);
ngControl.valueAccessor = componentRef.instance;
}
Может я не так создаю компонент, что делать?
передайте компоненту инжектор
не понял Можете уточнить, пожалуйста?
Обсуждают сегодня