Как прикрепить [formControl] к типу при его создании в Angular

Я пытаюсь прикрепить [formControl] (и другие атрибуты верхнего уровня) для объекта, который я создаю с ComponentFactoryResolver для того, чтобы обрабатывать логику формы с ControlValueAccessor,

В основном я делаю это:

@Component({selector: 'my-selector', ... })
class ATypeWhichSupportsValueAccessor implements ControlValueAccessor {
    @Input()
    otherValuableAttribute: boolean = false;

    // Implementation of ControlValueAccessor
    // ...
    //
}

@Component({selector: 'my-dynamic', template: '<ng-template #container></ng-template>', ... })
class CreateDynamic {
    constructor(
        private vcRef: ViewContainerRef,
        private resolver: ComponentFactoryResolver
    ) {}

    @ViewChild('container', { read: ViewContainerRef })
    container: ViewContainerRef;

    // ...

    create() {
        let type = ATypeWhichSupportsValueAccessor;
        let factory = this.resolver.resolveComponentFactory(type);
        let injector = Injector.create([], this.vcRef.parentInjector);

        // How to attach top level attributes to my control here?
        this._factoryComponent = this.container.createComponent(factory, 0, injector);
    }
}

Единственный способ, которым я понял это, это перейти в JIT и использовать RuntimeCompiler, создавая шаблон на лету, как <my-component [formControl]="args" [otherValuableAttribute]="true"></my-component>, Компилируя это, затем получая экземпляр.

Тем не менее, я не могу запустить это без отключения AOT.

Какой мой лучший вариант здесь?

0 ответов

Другие вопросы по тегам