Angular2 Маршрутизатор: не удается найти основную розетку для загрузки "HomeComponent"

попытался переключиться на новый маршрутизатор, как в версии "@ angular/router": "3.0.0-beta.2" в сочетании с "@angular/*": "2.0.0-rc.4", следуя официальным документам на ComponentRouter.

Тем не менее, я столкнулся с проблемой при попытке загрузить мое приложение с помощью HomeComponent по умолчанию:

Cannot find primary outlet to load 'HomeComponent'

Кажется, это связано с использованием templateUrl и внешнего html файла вместо использования встроенного шаблона.

HomeComponent изначально не отображается в окне и ошибка выводится на консоль. Однако, когда я использую ссылку на Home Component, она отображается второй рукой.

Как только я перейду из

templateUrl: 'home.html'

к

template: '<router-outlet></router-outlet>'

ошибка исчезла, отображается HomeComponent, и маршрутизация работает, как ожидалось.

Это известная проблема? Это работает для кого-то, использующего templateUrl? Есть ли что-то, что я должен уважать, чтобы заставить его работать?

Ответы

Ответ 1

Проблема заключалась в том, что из-за экрана загрузки приложения, <router-outlet></router-outlet> еще не существовало, из-за состояния гонки. Если вам нужно скрыть часть html, содержащую розетку, используйте [hidden] вместо *ngIf, чтобы гарантировать, что розетка всегда находится в DOM и не удаляется условно.