Angular2 - 在路由之前等待设置

时间:2016-07-01 16:11:45

标签: angular angular2-routing

我有一个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,我可以停止路由,但一旦应用程序就绪,它就不会继续。

也许我需要以不同的方式思考它。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你应该使用canActivate guard。 CanActivate有以下签名

canActivate(
    // Not using but worth knowing about
    next:  ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  )

您可以从state中提取网址

state.url

将网址存储在某些服务中。返回配置加载后,导航到适当的URL,可以从服务访问。