我有一个编辑用户的页面,它有一些子组件在里面。每个子组件都可以更改或对其父组件产生一些影响。
因此,我没有将更改发送到父页面并更新某些字段,而是使用以下命令“重新加载”了当前页面
private route: ActivatedRoute;
reload(){
this.router.navigate(["/admin/user/edit/"+this.user.id]);
}
基本上,它重定向到当前页面。例如,当前页是
http://web.info/admin/user/edit/9
它将被重定向到此页面,希望该页面内的所有数据都重新加载最新的数据。
但是,angular似乎不会使用
如何重新加载当前页面?
编辑:
这就是为什么我需要重新加载页面而不是手动更新当前页面上的数据的原因。我需要在其他组件上做更新,当我做更新时,它将添加一些东西到历史组件。我需要一起刷新User组件和History组件,因为这两个组件都会受到其他组件中更改的影响。
发布于 2018-09-25 14:43:32
它将100%工作。以下代码行负责在我的项目中重新加载页面。
load(val) {
if (val == this.router.url) {
this.spinnerService.show();
this.router.routeReuseStrategy.shouldReuseRoute = function () {
return false;
};
}
}
只需在代码中使用以下部分即可。
this.router.routeReuseStrategy.shouldReuseRoute = function () {
return false;
};
发布于 2019-07-23 13:37:13
做这么简单的事情有点棘手,但是用当前的解决方案重新加载和重新创建整个父组件和子组件却没有运气。
Angular Router现在提供了策略配置,以便在您导航到此用户在中建议的相同URL的情况下告诉路由器执行什么操作
此GitHub问题
..。
首先,您可以配置在设置路由器(路由器模块)时要执行的操作。
@NgModule({
imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })],
exports: [RouterModule]
})
或者,如果你像我一样,不想改变整个路由器模块的行为,你可以用这样的方法/函数来实现:
reloadComponent() {
this._router.routeReuseStrategy.shouldReuseRoute = () => false;
this._router.onSameUrlNavigation = 'reload';
this._router.navigate(['/same-route']);
}
当然你得先注射
在组件的构造函数中:
// import { Router } from '@angular/router';
...
constructor(private _router: Router){}
...
不知何故,正如@Abhiz所指出的那样
您必须设置shouldReuseRoute
,只需配置Router本身,页面重载就不能正常工作
此方法
..。
我使用了一个
箭头函数
对于
因为新的TSLint规则不允许非箭头函数。
发布于 2020-03-13 02:22:27
如果只需要刷新整个页面,这是最简单的解决方案
refreshPage() {
window.location.reload();
}
https://stackoverflow.com/questions/52389376
复制相似问题