Передать компонент Angular2 в качестве параметра

Мне нужно создать общее решение для открытия модального режима из любого места внутри приложения путем передачи некоторых параметров, просто эти параметры могут быть размером (маленький, большой, полноэкранный), отклоняемым (истина или ложь), и наиболее важным параметром является компонент, который мне нужно отобразить внутри этого модального. Мой вопрос заключается в том, как я могу передать полный компонент к методу внутри службы.

1 ответ

Вы можете просто передать класс компонента своему сервису:

service.openModal(component = AComponent, ...rest) {}

Если вы хотите передать его как строку, вы можете объявить, какие компоненты будут использоваться в вашем сервисе, и искать их по имени. Что-то вроде этого:

service.dynamicComponents = [AComponent, BComponent];

service.openModal(params = { component: 'AComponent' }) {
  const component = this.dynamicComponents
                        .find(o => o.constructor.name === params.component)
}
Другие вопросы по тегам