我有一个使用 Angular 6 和 AngularJS 1.6.4 的混合 Angular 应用程序。我已经在 Angular 模块中定义了所有路由,并使用 UpgradeComponent 升级了 AngularJS 组件,如升级指南中所述。
当我尝试使用 $location 服务从一个 AngularJS 视图导航到另一个 AngularJS 视图时,浏览器窗口中的 url 会发生更改,但 Angular 路由器没有检测到 url 更改,并且 UI 中仍然加载相同的视图。我试图订阅路由器事件和位置服务事件,没有一个被触发。
但是,当我单击其他链接时,它会导航到该链接。同样在移动到新链接后,当我单击浏览器的后退按钮时,它会将应用程序导航到之前不起作用的链接。例子:
- 当前网址是http://localhost/#/App/View1
- 单击指向http://localhost/#/App/View2的链接。Url 已更新,但 View1 仍加载到 UI 中。
- 单击指向http://localhost/#/App/View3的链接。更新 URL 并加载 View3。
- 单击浏览器的后退按钮。Url 已更新为 View2,并且 View2 已在 UI 中加载。
如果我使用 AngularJS 的 $window 服务而不是 $location,一切正常。在升级到 Angular 6 之前,它与 Angular 4 一起工作。请帮助使用 $location 服务使其工作。