@Coder321

Как передать компонент в другой компонент?

Как передать компонент в другой компонент в Angular 2 ?
То есть, можно ли во входящие параметры одного компонента передать другой и там его отрендерить, а если быть точнее, есть модальное окно, можно в него передать другой компонент? Суть в том что бы использовать один компонент модалки но внутриности передавать уже разные.
  • Вопрос задан
  • 1076 просмотров
Пригласить эксперта
Ответы на вопрос 2
AMar4enko
@AMar4enko
// Инжектим в наш компонент-контейнер следующее
private _cfr: ComponentFactoryResolver,
private _vcr: ViewContainerRef

// Для создания компонента руками
// описываем переопределения зависимостей
// Компонент передан в переменной componentClass 
const componentProviders = ReflectiveInjector.resolve([
  { provide: Something, useValue: 1 }
]);

// Получаем фабрику из класса нашего компонента, который рендерим 
const componentFactory = this._cfr.resolveComponentFactory(componentClass);
// Создаем для него инжектор - используем .parentInjector или .injector нашего текущего компонента, исходя из того, какую иерархию DI нам нужно получить для создаваемого компонента
const childInjector = ReflectiveInjector.fromResolvedProviders(componentProviders, this._vcr.parentInjector);

// Фабрикой создаем экземпляр компонента
let instance = componentFactory.create(childInjector, []);
// Вставляем во view нашего компонента
this._vcr.insert(instance.hostView, this._vcr.length);
// Запускаем отслеживание изменений
instance.componentRef.changeDetectorRef.detectChanges();
Ответ написан
mmmaaak
@mmmaaak
нужно просто добавить его в declarations модуля, и он станет доступным для рендера из любого компонента этого модуля, или если хочется отрендерить в компоненте из другого модуля, то ваш модуль нужно заимпортить в целевой модуль, а компонент, который нужно отрендерить нужно добавить в exports вашего модуля
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект