Zan*_*kes 8 angular2-routing angular
我上周刚刚开始深入挖掘Angular 2并且(显然有很多其他人)在路由方面遇到了一些严重的问题.我开始使用路由器3.0.0-alpha.7.我真正想要做的是在我的基础组件中与这些子组件共享一些检索到的数据.这是我的路线配置.
[{
path: 'base/:id',
component: BaseComp,
children: [{
path: '',
component: OverviewComp
}, {
path: 'docs',
component: DocsComp
}]
}]
Run Code Online (Sandbox Code Playgroud)
当基本路由被命中时,我正在通过基于:id参数的服务检索一些数据.收到这些数据后,我希望它可以级联给孩子们.我希望它就像在OverviewComp和DocsComp上放置@Inputs一样简单,但我很快意识到,考虑<router-outlet>到实际的模板组件,似乎没有任何方法可以在模板中执行此操作.DERP.
有没有人想过做这种事情的最佳方法是什么?
我应该使用早期的路由器版本(路由器已弃用)吗?
如果该id参数被移动到子组件?
子组件是否只是命中服务以获取相同的数据(缓存)?
我应该使用早期的路由器版本(路由器已弃用)吗?
Angular2 推翻了他们的路由概念,开发速度是一个挑战:)。不过,请确保您不要选择已弃用的版本。当他们选择将其标记为“已弃用”时,它仍处于测试阶段,因此您可能不想使用已弃用的不稳定路由。
是否应该将 id 参数移至子组件?
我想说这取决于你的结构。假设您有很多这样的路线
/user/:id/....
Run Code Online (Sandbox Code Playgroud)
在侦听 /user/:id 的组件中解析用户,并执行一次而不是在每个子组件中执行一次,这绝对是有意义的。但是,如果您想让用户在子路由中可用,则有一个缺点。使用服务可以达到这样的目的,但您需要应对后端 http 请求的异步特性。当子路由被激活并且其组件被渲染时,后端调用可能尚未完成。因此,您无法直接从子组件访问服务,您还需要获取可观察的对象。这会给您的服务增加一点复杂性。
另一种方法是优先考虑开销而不是复杂性,并解析子组件中所需的所有数据。这意味着,对于这样的路线
/user/:id/process/:id/edit
Run Code Online (Sandbox Code Playgroud)
您需要解析用户和进程,并且可能对“进程”的第二次调用取决于必须事先解析的“用户”。不过,如果您有很多带有大量 ID 的子路由需要解决,这可能会有点乏味。
请注意,如果您将段路由/user/:id到需要显示有关用户的一些数据的组件,并且您也需要子组件中的用户数据,则应选择第一个选项。对同一数据进行多次调用是没有意义的。
子组件是否应该直接访问服务来获取相同的数据(缓存)?
是的,绝对是同一条路线。这节省了带宽和服务器资源。此外,这可能很危险,因为服务器可能在每个后续请求中发送不同的数据(至少,如果您不指定请求文档的版本)。当然,每当用户触发新路线时,请自行选择是提供缓存数据还是要求服务器更新。
| 归档时间: |
|
| 查看次数: |
6104 次 |
| 最近记录: |