как получить root viewContainerRef приложения angular2

loadNextToLocation теперь ожидает ViewContainerRef, есть какие-нибудь идеи о том, как правильно получить корневой viewContainerRef приложения?

заранее спасибо.

Обновить:

я хочу получить root viewContainerRef из любого класса или любого компонента

Ответы на вопрос(2)

но я предполагаю, что он работает так же, как и с другими компонентами:

class AppComponent {
  constructor(private vcRef:ViewContainerRef) {}
}
 Bahgat Mashaly06 июн. 2016 г., 17:13
извините, это не работает, я не могу отредактировать свой комментарий, вы правы, я должен хранить root ViewContainerRef в памяти, пока он мне не понадобится, но разве это лучшее решение?
 Bahgat Mashaly06 июн. 2016 г., 17:06
спасибо Günter Zöchbauer, он работает из другого компонента, чем AppComponent большое спасибо Günter Zöchbauer
 Günter Zöchbauer06 июн. 2016 г., 17:19
Что не работает?Пример плунжера. ViewContainerRef вашего корневого компонента в любом случае будет храниться в памяти до тех пор, пока работает приложение Angular2. Единственное, что вы получаете, это ссылка.
 Günter Zöchbauer06 июн. 2016 г., 17:08
Затем установите его на общем сервисе и приобретите его у того сервиса, где он вам нужен. Насколько я знаю, нет официального способа получитьViewContainerRef от корневого компонента извне корневого компонента.

Это полный взлом и никоим образом не является правильным способом получения root ViewContainerRef, но я не смог найти официальный способ сделать это. Так как это не публичные свойства, они могут измениться в любое время, и этот метод больше не будет работать. Этот метод все еще работает с 2.0.0-rc.3.

class SomeComponent {
    constructor(private appRef: ApplicationRef) { }
    let viewRef: ViewContainerRef = appRef['_rootComponents'][0]['_hostElement'].vcRef;
}

На данный момент на GitHub также есть открытая проблема:https://github.com/angular/angular/issues/9293

ОБНОВЛЕНИЕ: Угловой 2.4.2

Вышеуказанный метод не будет работать с более поздними версиями Angular (начиная с 2.4.2).

Метод, который я использую сейчас, таков:

В корневом компоненте передайте ViewContainerRef, чтобы вы могли ссылаться на него позже:

class AppComponent {
    constructor(public viewRef: ViewContainerRef) { }
}

И затем в компоненте или сервисе, который вы хотите получить root ViewContainerRef:

class SomeOtherComponent {
    constructor(private appRef: ApplicationRef) { }

    let viewRef = (appRef.components[0].instance as AppComponent).viewRef;
}

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

 Bahgat Mashaly30 июн. 2016 г., 01:48
большое спасибо @dsara

Ваш ответ на вопрос