在角2/4中平行(异步非阻止)路由



该应用程序的页面具有2至3个类别按钮。基本上,按钮单击将拉出每个类别中的项目列表,一旦获得API获取数据,应显示该页面。

我已经设计了带有分解API调用的Angular 2应用程序路由,并且当页面加载时,当我们将应用程序功能迁移到Angular 4时,我不应用旋转器阻止整个页面。

当用户单击一个类别时,如果响应延迟,他可以单击另一个类别。当他回到后退时,他会期望将数据加载到先前单击的类别中,但是Angular 2/4取消了由于Navigation ID does not match with the current route

而导致的路线

要有更好的理解,请参阅下面的PLNKR链接。http://embed.plnkr.co/uiyhzwcl63tfq41wy48q/

单击行星,并同时观察到只有一个部分加载,而另一部分则不会加载数据。如果您确实进行了检查,则可以看到VavigationCancel事件

不确定是否有资格解释在Angular 2上为路由器工作的方法,而是再次通过了他们的文档。

总而言之,您想将路由组件延迟到 已经获取了必要的数据。

您需要一个解析器。

因此,如我的理解,解决方案将有助于如果您要完全切换视图并在切换之前获取数据。因此,当路线被激活时,数据就准备就绪。这也允许您在将错误路由到组件之前处理错误。想一想主尾布布局,您可以单击一个项目,它会导航到详细信息。可以导航到没有记录的ID的详细信息,最好将用户发送回列表。

当您想在路线上显示不同的出口基础时,您的情况并不是常见的情况。而且您希望单击"人/星球",它将直接渲染组件并开始获取数据。您可能还需要向占位符显示"加载..."。所以我建议将ngoninit钩用于此目的。

工作plunker:https://embed.plnkr.co/rsejb46wi09psotcljn5/

最新更新