19

按照官方文档,尝试切换到新路由器,如版本 "@angular/router": "3.0.0-beta.2" 结合 "@angular/*": "2.0.0-rc.4"组件路由器。

但是,在尝试使用默认 HomeComponent 加载我的应用程序时,我遇到了一个问题:

Cannot find primary outlet to load 'HomeComponent'

这似乎与使用 templateUrl 和外部 html 文件而不是使用内联模板样式有关。

HomeComponent 最初未显示在 Window 中,错误会打印到控制台。但是,当我使用指向 Home Component 的链接时,它会显示为二手。

一旦我从

templateUrl: 'home.html'

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

错误消失,显示 HomeComponent 并且路由按预期工作。

这是一个已知问题吗?它适用于使用 templateUrl 的人吗?有什么我必须尊重的东西才能让它发挥作用吗?

4

1 回答 1

28

问题是,由于应用程序加载屏幕,<router-outlet></router-outlet>有时由于竞争条件不存在。如果您需要隐藏包含 outlet 的 html 部分,请使用[hidden]而不是*ngIf, 以确保 outlet 始终在 DOM 中并且不会有条件地删除。

于 2016-07-06T18:00:50.650 回答