我试图在我的APP初始化时将新状态推送到浏览器历史记录,但在推送状态时它也会重定向不需要的页面。
这是一个演示工作应用程序。 https://angular-tet5fy.stackblitz.io/page2?fbclid=IwAR1zP_UTnCQxKMp8o3ZXf-n4NR3ftu_4JoulLqItaONa-_wSPJ_DT95OgRU
这是代码:
ngAfterViewInit() {
console.log('init called');
var x = document.referrer;
console.log('ref', x);
if (x) {
console.log('pushing state');
this.location.pushState({id:'page3'}, 'Page3', '/page3');
}
}
预期行为:
目前的行为:
ngAfterViewInit() {
console.log('init called');
var x = document.referrer;
console.log('ref', x);
if (x) {
console.log('pushing state');
let locat = location.href;
history.replaceState({id:'page3'},'Page3','/page3');
history.pushState(null,null,locat);
}
}
我们在这里做的是将你想要成为history.replaceState({id:'page3'},'Page3','/page3');
后面的网址更改为url然后用history.pushState(null, null,locat);
在他的第一个网址上创建一个新的历史记录。
我已经在两个不同的帖子中回答了你这个问题,只有一点变化:
Angular platformLocation pushState not working
预期的行为:1。单击该链接将用户带到page2。 2.初始化page2时,它应将状态'/ page3'推送到浏览器历史记录。 3.当用户现在点击浏览器时,它应该转到/ page3,因为它在上面的步骤2中被推送到历史记录。
因为你所做的,你的历史状态是:p1 - > p2 - > p3。这是你的描述!你想要这样:
编辑:
这是你如何实现它。在page2.component.ts
。
ngOnInit() {
history.replaceState({ data: 'at page 3' }, 'Page3', '/page3');
history.pushState({ data: 'at page 2' }, 'Page2', '/page2');
}
但同样,请阅读doc。