Как стать автором
Обновить

Комментарии 8

А через componentfactoryresolver не пробовали?

Ему же нужен определённый известный тип, даже если он динамический. Или это можно как-то обойти?

Если ты про дженерик то особо без разницы

Не совсем понимаю. Например, вот как оно должно приблизительно выглядеть:


    // создаём factory
    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(WebComponentType);

    // создаём компонент внутри контейнера
    const componentRef = this.componentContainerRef.createComponent<WebComponentType>(componentFactory);

    // передаём данные в @Input компонента
    componentRef.instance.someInput= this.componentInput;

Как всё это сделать, если WebComponentTypeне существует? Известен только селектор.
Просто создать класс?


export interface WebComponentType {
    someInput: any;
}

В шаблоне


<ng-template #tempvar></ng-template>

В самом компоненте


@ViewChild('tempvar'{read:ViewContainerRef}) templateRef;
public componentRef:ComponentRef<any>;
AddComponent(component<any>) {
  this.templateRef.clear();
  const factory:ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory<any>(component);
  this.componentRef = this.templateRef.createComponent<any>(factory);
}

type any можно использовать. Единственное что компонент должен быть в модуле загружен) Либо делаешь обёртку компонент с прописанным api. И дальше на стадии инит переприсваиваешь своими, ну темплейт передаешь. Если рефлект метадату подключить и покапать декораторы то можно ещё и динамику подключения аутпутов и инпутов сделать

Так вся проблема в том, что компонент не загружен в модуле. К нему вообще нет никакого доступа из кода, только через API браузера. Это как создавать обычный div, только с инпутами и аутпутами.
По сути я и сделал обёртку.
Рефлект метадату посмотрю, может пригодится, но скорее всего DOM такое через себя не пропустит.

Да я уже понял что немного тупанул

Я просто немного задачу наверное неправильно понял

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории