做一些如此简单的事情有点棘手,但没有运气尝试使用当前的解决方案重新加载和重新创建整个父级和子级组件。
Angular Router 现在提供策略配置,告诉路由器在您导航到与该用户建议的相同 URL 时该怎么做这个 GitHub 问题 https://github.com/angular/angular/issues/13831#issuecomment-422683314.
首先,您可以配置设置路由器(您的路由器模块)时要执行的操作。
@NgModule({
imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })],
exports: [RouterModule]
})
或者,如果您像我一样并且不想更改整个路由器模块行为,您可以使用如下方法/函数来实现:
reloadComponent() {
this._router.routeReuseStrategy.shouldReuseRoute = () => false;
this._router.onSameUrlNavigation = 'reload';
this._router.navigate(['/same-route']);
}
当然你必须先注入Router
在组件的构造函数中:
// import { Router } from '@angular/router';
...
constructor(private _router: Router){}
...
不知何故,正如@Abhiz 所指出的你必须设置shouldReuseRoute,仅配置路由器本身,页面重新加载不起作用这种方法.
我用过一个箭头函数 for shouldReuseRoute
因为新的 TSLint 规则不允许非箭头函数。