2016-06-07 4 views
1

Не совсем уверен, как это объяснить, но я дам свой лучший снимок.Угловой 2 компонент доступа из инъецируемого

У меня есть инъекционный провайдер, который загружается в основном приложении. Поставщик пытается получить доступ к компоненту.

Я могу получить доступ к этому компоненту с помощью ViewChild из других компонентов, но я не могу этого сделать. Я думаю, это потому, что провайдер его инициализировал перед компонентом, поэтому его недоступно для запроса ViewChild.

Есть ли способ использовать ссылку Viewchild внутри внутри инъекционной функции? Что-то вроде инициализации детей, когда я вызываю функцию.

Извините, если это сбивает с толку, не совсем уверен, как объяснить.

Спасибо, Radu

ответ

0

@ViewChild() запрашивает мнение. Инъекционная (услуга) не имеет вида, поэтому @ViewChild() не может ее найти. Также Angular не обрабатывает @ViewChild() аннотации в сервисах, в первую очередь, только в директивах и компонентах.

Что вы можете сделать, это запросить с помощью @ViewChild() и передать результат на общую услугу.

+0

В настоящее время мое обходное решение состоит в том, чтобы иметь общедоступную переменную внутри службы, и я просто устанавливаю ее в функции afterViewInit и ее доступной мне после этого. Я просто жестко, это будет для него более чистым способом. Спасибо за объяснение – keepwalking

+0

Я бы счел, что плохой дизайн имеет '@ViewChild()' ('ElementRef') или все, что он возвращает в сервисе. Я предпочел бы использовать службу для связи с компонентом, который содержит '@ViewChild()', чтобы заставить компоненты выполнять команды против ссылки вместо передачи ссылки вокруг. –

+0

Любые указания о том, как я могу заставить службу обмениваться данными с компонентом? – keepwalking

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