這兩天使用 Angular2 遇到的一個 @angular/router 的 bug:
症狀
@angular/router 版本 3.0.0-beta.2
- 使用 safari 瀏覽器,iOS 的都可以
- 打開 Angular2 官方的範例項目
- 點擊導航欄上的 Heroes 轉到 Heroes 列表頁面
- 後退回到 Dashboard 頁面,正常情況下應該有的四個 Heroes 沒有出現
桌面 safari 或 iOS 的都可以,使用 router 導航到一個新頁面,然後後退,原頁面 Component 的生命週期函數不會被調用,導致頁面表現不正常。
解決方法
已經有人修復了:fix(router): back button does not work in IE11 and Safari
但至本文成文還沒有更新到最新的 router npm 模塊裏。不急的話等 router 下個版本應該就修復了。臨時應急的話可以自行修改項目目錄下的node_modules/@angular/router/src/router.js
的 282 和 284 行即可
this.locationSubscription = this.location.subscribe(Zone.current.wrap(function (change) { return _this.scheduleNavigation(_this.urlSerializer.parse(change['url']), change['pop']); }));