我有一个Angular2客户端使用RC4和" @ angular / router":" 3.0.0-beta.2"。当应用程序首次加载时,它会进行webApi调用(到同一个域)以获取一些配置数据。这很重要 - 它包含webApi的URL(以及其他内容)。
在完成此操作之前,我无需显示登录信息或任何页面。我尝试隐藏内容,直到这样完成:
<div *ngIf="IsConfigReady">
<router-outlet></router-outlet>
</div>
但如果我隐藏路由器插座,我会收到路由错误:
错误:无法找到要加载&#39; MyComponent&#39;
的主要插座
用户可以使用直接定位它们的URL访问许多组件。我无法将ngif放在所有单独的组件上。
我似乎应该有一种方法可以在路由开始之前等待设置完成。使用CanActive,我可以停止路由,但一旦应用程序就绪,它就不会继续。
也许我需要以不同的方式思考它。 有什么想法吗?
答案 0 :(得分:0)
你应该使用canActivate guard。 CanActivate有以下签名
canActivate(
// Not using but worth knowing about
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot
)
您可以从state
中提取网址
state.url
将网址存储在某些服务中。返回配置加载后,导航到适当的URL,可以从服务访问。