AngularJS调用AngularRouter时不更新浏览器URL

AngularJS调用AngularRouter时不更新浏览器URL,angularjs,angular,ng-upgrade,Angularjs,Angular,Ng Upgrade,我有一个AngularJS应用程序,我正在使用ngUpgrade将其转换为AngularJS/AngularJS混合应用程序。AngularJS应用程序与众不同,因为它不使用AngularJS或AngularUI路由器,而是有自己的手动导航解决方案,不更新浏览器中显示的URL,也不与浏览器的历史API交互。到目前为止,一切顺利 我想开始在混合应用程序中使用Angular Router,但最初仅用于新页面 为了使应用程序的两个部分——Angular和AngularJS——能够相互操作,我降低了An

我有一个AngularJS应用程序,我正在使用ngUpgrade将其转换为AngularJS/AngularJS混合应用程序。AngularJS应用程序与众不同,因为它不使用AngularJS或AngularUI路由器,而是有自己的手动导航解决方案,不更新浏览器中显示的URL,也不与浏览器的历史API交互。到目前为止,一切顺利

我想开始在混合应用程序中使用Angular Router,但最初仅用于新页面

为了使应用程序的两个部分——Angular和AngularJS——能够相互操作,我降低了Angular Router服务的级别,并将其注入到我的AngularJS服务中,这样我就可以调用
Router.navigateByUrl()
从AngularJS代码导航到一个新的Angular页面组件

这工作正常-角度页面组件已添加到我的
,并按预期显示在浏览器中

奇怪的是,浏览器的URL并没有改变。当我为路由器启用跟踪时,我可以看到新路由正在正确处理,并且新页面显示在浏览器中,但浏览器URL仍然显示旧路由。此外,如果查看浏览器历史记录,则新管线尚未添加到其中

我尝试将
NgZone
注入我的AngularJS服务,并在
NgZone.run()
内调用
Router.navigateByUrl()
,但没有任何区别

当我从AngularJS调用
Router.navigateByUrl()
时,一切正常-除了在我从AngularJS调用之后,当我看到同样的症状时。这就好像直接从AngularJS调用
路由器
,某种程度上破坏了路由和浏览器URL栏之间的链接


有人能帮忙吗?

所以问题是当路线改变时,AngularJS
$location
服务没有被更新,在其值和浏览器中显示的值之间留下了差异。该服务中还有一个手表,在每个摘要周期中都会触发,然后根据
$location
服务中的值重置浏览器url

原来这是因为我需要在我的
AppModule
viz中配置统一角度定位服务:

imports: [
  LocationUpgradeModule.config()
]
并将
$locationShim
服务降级,以便注入AngularJS,即:

angularJS.module('my-app')
  .factory('$location', downgradeInjectable($locationShim));

因此,问题在于当路线改变时,AngularJS
$location
服务没有被更新,在其值和浏览器中显示的值之间留下了差异。该服务中还有一个手表,在每个摘要周期中都会触发,然后根据
$location
服务中的值重置浏览器url

原来这是因为我需要在我的
AppModule
viz中配置统一角度定位服务:

imports: [
  LocationUpgradeModule.config()
]
并将
$locationShim
服务降级,以便注入AngularJS,即:

angularJS.module('my-app')
  .factory('$location', downgradeInjectable($locationShim));