Если у вас есть первичные и вспомогательные розетки вместе, вы должны убедиться, что оба маршрута полностью разрешены для компонента. Фактически, вы должны рассматривать каждый путь маршрута изолированно.
Например, если у вас есть компонент, который устанавливает розетку маршрутизатора, и именованную розетку маршрутизатора:
<router-outlet></router-outlet>
<router-outlet name="dialogOutlet"></router-outlet>
Затем необходимо убедиться, что каждый маршрут может разрешаться для компонента:
{ path: 'inventory', component: InventoryComponent, children: [...] },
{ path: 'packoutdialog', component: PackoutComponent, outlet: 'dialogOutlet' }
Обратите внимание, что маршрут packoutdialog
для названного выхода dialogOutlet
должен быть определен на корневом уровне. Если вы определили названный выход как дочерний маршрут, он никогда не разрешится.
Для навигации по этим маршрутам:
this.router.navigate([{ outlets: { primary: 'inventory', dialogOutlet: 'packoutdialog'}]);
Основной маршрут будет преобразован в компонент InventoryComponent, а указанный выход будет преобразован в компонент PackoutComponent.
Чтобы очистить диалоговое окно, вы можете явно указать путь для обоих:
this.router.navigate([{ outlets: { primary: 'inventory', dialogOutlet: null}]);
Или, если вы хотите иметь возможность показывать dialogOutlet
независимо от основного маршрута, вы можете перемещаться без явного определения основного маршрута:
this.router.navigate([{ outlets: { dialogOutlet: 'packoutdialog'}]);
Затем очистить диалоговое окно:
this.router.navigate([{ outlets: { dialogOutlet: null }]);
Демо
Вышеприведенное также работает для лениво загруженных модулей.
Демонстрация с Lazy Module 1
Демонстрация с Lazy Module 2