我有一个Angular 7应用程序,可在其中导航到一个链接,例如eligibility / 1,它没有问题,并且网络标签显示了出站请求。页面呈现后,尝试导航到eligibility / 2(通过链接单击)的尝试将不会发送出站请求。
路由器跟踪显示如下:
这是路由器导航调用之后的Javascript。请注意,返回到temp的Prom表示区域状态为Null,值的值为Array(0)。
这是区域问题吗?请注意,也没有控制台错误。
答案 0 :(得分:1)
如果在组件初始化中仅发生传出呼叫,则我不希望网络选项卡中有任何东西。 Angular应用程序是SPA,处理eligibility
网址的组件很可能仅创建一次,然后在每次后续导航时从内存中加载,直到被销毁。因此,如果您希望每次导航都执行某些操作,则必须订阅导航事件并在那里进行工作。
我有一个简单的routing example,听起来像您所描述的一样。希望有帮助。
答案 1 :(得分:1)
为了在导航到同一网址时刷新页面,必须使用以下方式配置 RouterModule :
@ngModule({
imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: ‘reload’})],
exports: [RouterModule],
})
这将改变您应用程序的整体行为,因此最好订阅 ActivatedRoute 的 params 参数:
this.route.params.subscribe((params) => {
console.log(params);
console.log(this.route.snapshot.data);
});
答案 2 :(得分:0)
Angular默认情况下不会刷新已经加载的组件。但是该行为可以被覆盖,如下所示。
// Browser is already on /pathName/5102
// We see the proper display which means
// our router paths are correct.
// And now we attempt to go to a new path.
let newLocation = `/pathName/5110`;
// override default re use strategy
this.router
.routeReuseStrategy
.shouldReuseRoute = function () {
return false;
};
this.router
.navigateByUrl(newLocation)
.then(
(worked) => {
// Works only because we hooked
// routeReuseStrategy.shouldReuseRoute
// and explicitly told it don't reuse
// route which forces a reload.
// Otherwise; the url will change but new
// data will not display!
},
(error) => {
debugger;
}
);