在Angular2中不能可靠地触发路径参数订阅
问题描述:
我正在开发一个基于Angular2的测验,其中包含一些“静态”组件(家庭,常见问题等)和一个代表测验卡的组件。 我的设置使用的路线只有这样的占位符:在Angular2中不能可靠地触发路径参数订阅
{
path: 'quiz/:questionPage',
component: QuizComponent
},
这里questionPage
应该是数字...
并切换竞猜卡我改变位置,并显示新卡:
import { Location } from '@angular/common';
import { ActivatedRoute } from '@angular/router'
...
constructor (
private route: ActivatedRoute,
private location: Location) {...}
...
showQuestion(next) {
this.location.go ('quiz/' + next);
this.showQuestion (next);
}
要实现浏览器在QuizComponent
后退/前进(除了在竞猜卡的下一个/上)我想我可能只是刚刚订阅路由的参数在QuizComponent
的构造:
this.route.params.subscribe(params => {
console.log ("found params: ", params);
});
这一直工作就像一个魅力:点击下一个/上更新了卡与浏览器的前进/后退,我熬过卡的历史。所有的完美,但我想,但我发现,至少有一个使用的情况下不工作:
如果我回去(不管多久),然后单击新的东西后退按钮也只更新位置(地址栏中的网址),但上述订阅未被解雇(因此卡片不会更新)。如果我再次点击一次,它会再次正常工作,但我后退两步!?我可以再次前进访问历史上正确的条目,但这当然令人讨厌...
所以..我做错了什么?也许这也是一个超级愚蠢的方法来实现浏览器后退/前进?
通常我会使用路由器来导航而不是位置,不确定它是否会在这种情况下有所作为。 –