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 и не удаляется условно.