我正在開發一個基於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);
});
這一直工作就像一個魅力:點擊下一個/上更新了卡與瀏覽器的前進/後退,我熬過卡的歷史。所有的完美,但我想,但我發現,至少有一個使用的情況下不工作:
如果我回去(不管多久),然後單擊新的東西後退按鈕也只更新位置(地址欄中的網址),但上述訂閱未被解僱(因此卡片不會更新)。如果我再次點擊一次,它會再次正常工作,但我後退兩步!?我可以再次前進訪問歷史上正確的條目,但這當然令人討厭...
所以..我做錯了什麼?也許這也是一個超級愚蠢的方法來實現瀏覽器後退/前進?
通常我會使用路由器來導航而不是位置,不確定它是否會在這種情況下有所作爲。 –