2016-11-21 3 views
1

В то время как я экспериментировал с добавлением вспомогательных маршрутов в мое приложение для отображения всплывающих окон и мастеров, у меня были некоторые проблемы с получением углового, чтобы фактически распознать мой названный тег router-outlet. Я разместил его внутри компонента, который был , а не, который был перенаправлен, но вместо этого находился только внутри маршрутизируемого компонента. Каждый раз, когда я пытался перейти к правильному маршруту, я получал сообщение вроде Cannot find router outlet popup.... Я переместил router-outlet на уровень в иерархии компонентов, и внезапно все было нормально.Как использовать угловые найти вспомогательные метки для маршрутизатора для использования

Итак, вопрос в том, как именно угловой анализ дерева компонентов найти router-outlet теги для добавления компонента к?

ответ

0

Маршрутизатор розетки регистрирует себя на материнской RouterOutletMap (parentOutletMap), когда он был создан

https://github.com/angular/angular/blob/52be848f94a70feffd44a1d688286f750d0471d9/modules/%40angular/router/src/directives/router_outlet.ts#L52

@Directive({selector: 'router-outlet'}) 
export class RouterOutlet implements OnDestroy { 
    ...  
    constructor(
     private parentOutletMap: RouterOutletMap, private location: ViewContainerRef, 
     private resolver: ComponentFactoryResolver, @Attribute('name') private name: string) { 
    parentOutletMap.registerOutlet(name ? name : PRIMARY_OUTLET, this); 
    } 
+0

Интересно, что бы вызвать угловатый не найти маршрутизатор-выход тогда? Зарегистрировать себя в неправильной карте? Является ли какая-то комбинация какого модуля маршрутом определена в vs, где размещается роутер-выход? – bringel

+0

Можете ли вы воспроизвести в Plunker? –