考虑以下路由配置:
const routes: Routes = [
{
path: '',
component: AppComponent,
resolve: {
app: AppResolver
},
children: [
{
path: 'user/:uid',
resolve: {
user: UserResolver
},
children: [
{
path: '',
component: ViewUserComponent
},
{
path: 'edit',
component: EditUserComponent
}
]
}
]
}
];
UserResolver
为路由 /user/:uid
的任何子级检索用户数据。
使用此数据,可以通过导航到 /user/:uid
查看用户配置文件,然后通过导航到 /user/:uid/edit
进行编辑。
成功编辑后,将重定向到用户的更新个人资料 (/user/:uid
)。
但是, View 和编辑页面都是已解析路由的子级,当从一个导航到另一个时不会触发解析器。
因此,当从编辑组件导航回 View 组件时,显示的数据仍然是旧的、未更新的数据。
是否有任何方法可以使已解析的 user
数据无效以强制解析器从服务器再次获取它?还是有其他方法可以达到这种效果?
app
数据没有改变,我们不应该重新加载它。
最佳答案
我已经测试了解决方案“runGuardsAndResolvers”,它适用于我的用例,每次子页面更改时都会调用解析器。
它只是将此选项添加到您希望以这种方式表现的路由部分。
export const ROUTES: any = [
{
path: 'project/:name',
runGuardsAndResolvers: "always",
component: ProjectComponent,
resolve: { project: ProjectResolver },
children: [
...
关于angular - 如何刷新路线的解析数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44232418/