如何解析angular 4中的应用程序级数据?
假设我有一个全局配置,应该为所有URL加载 例如:如何解析angular 4中的应用程序级数据?,angular,Angular,假设我有一个全局配置,应该为所有URL加载 例如: / /users /users/abc 我可以手动将解析器逐个添加到所有URL,但在这种情况下,我必须从捕获路由数据的每个组件更新全局配置,对吗?有没有更好的方法来处理这个问题 假设我们有多个模块: App Module /login /sign-up User Module /user/list /user/:id Product Module /product/list /product/:id @DeborahK的解决方案我们仍
/
/users
/users/abc
我可以手动将解析器逐个添加到所有URL,但在这种情况下,我必须从捕获路由数据的每个组件更新全局配置,对吗?有没有更好的方法来处理这个问题
假设我们有多个模块:
App Module
/login
/sign-up
User Module
/user/list
/user/:id
Product Module
/product/list
/product/:id
@DeborahK的解决方案我们仍然需要将解析器添加到每个模块的根路由中,我可以说这肯定会起作用。但是有没有一种方法可以在一个地方应用一次?如果您有父路由和子路由,您可以在父路由上设置冲突解决程序,并在子路由中使用它。我举了一个例子: 我的父母和孩子的路线是这样的。请注意,冲突解决程序仅位于父级上
{
path: ':id/edit',
component: ProductEditComponent,
resolve: { product: ProductResolver },
canDeactivate: [ProductEditGuard],
children: [
{
path: '',
redirectTo: 'info',
pathMatch: 'full'
},
{
path: 'info',
component: ProductEditInfoComponent
},
{
path: 'tags',
component: ProductEditTagsComponent
}
]
}
然后,您可以从子级读取解析程序数据,如下所示:
ngOnInit(): void {
this.route.parent.data.subscribe(data => {
this.product = data['product'];
if (this.productForm) {
this.productForm.reset();
}
});
}
我正在关注变化,所以请订阅。如果您不需要观察更改,可以使用快照。我也在尝试找出angular 4的最佳方法,从我的测试中可以看出 a) 您不能将解析程序置于顶层,即如果您有多个功能模块,解析将不会级联 b) 将冲突解决程序放置在每个功能模块的根目录下(您需要数据),会导致冲突解决程序不必要地运行(例如,每次您在不同功能模块的组件之间来回导航时) 因此,我认为解析器似乎不太适合应用程序范围的数据加载,最好探索其他技术,如APP_初始值设定项或向引导程序中注入内容的方法(例如,这看起来很有趣:)。想知道其他人认为什么最合适。祝你好运,如果你发现任何感兴趣的事情,请及时更新