2016-12-22 3 views
10

Я пытаюсь реализовать динамический компонент. Мое требование: у меня есть три класса - LayoutComponent, MenuService и DynamicService. LayoutComponent используется для вызова метода MenuService для выполнения некоторой базовой операции после выполнения операции, метод MenuService снова вызывает метод DynamicService для создания динамического компонента.Anguler2 - Unhandled Promise rejection: Нет провайдера для ViewContainerRef! (В динамическом шаблоне)

Вот мой Plunker со следующей ошибкой, которая она дает

Unhandled Promise rejection: No provider for ViewContainerRef! ;

+0

Почему вы называете сервисы «XxxComponent»? (например, 'MenuComponent' или' DynamicComponent'? –

+0

явная ошибка новобранец .. исправлено – Ranjan

ответ

21

ViewContainerRef может быть введена только компоненты или директив, но не к услугам.

Компоненты и директивы получают ViewContainerRef элемента, к которому они присоединены. Сервис не привязан к какому-либо виду.

Что вы можете сделать, это придать ViewContainerRefи сервиса для компонента, а затем в конструкторе передать ViewContainerRef на службу. Каждый сервис или компонент, который внедряет эту услугу, может получить доступ к ViewContainerRef, который он удерживает.

+0

, делая то же самое в коде, вводя «ViewContainerRef» и передавая его в конструкторе сервисам для доступа .. или я их вставляю Неправильно? – Ranjan

+1

Можете ли вы посоветовать мне, как правильно вставить «ViewContainerRef» в компонент. – Ranjan

+3

'constructor (viewContainerRef: ViewContainerRef, service: MyService) {service.vcRef = viewContainerRef;}' –

Смежные вопросы