UI-路由器混合:在触发具有NG2组件的NG1状态之前,NG2状态不起作用

我有一个大型的angularjs 1.7.4应用程序,带有HTML5模式下的UI路由器,具有多个入口点。

(该项目使用babel 7.6来编译typescript和corejs3 polyfills,所以我没有使用angular-cli)。

我正在尝试将入口点之一迁移到混合应用程序(Angular 8.2.13,@ uirouter / angular-hybrid 9.0.0)。

我遵循了迁移指南@ https://angular.io和迁移指南https://github.com/ui-router/angular-hybrid,除了Angular中的状态定义外,其他所有东西似乎都可以正常工作。它们只有在触发带有Angular组件的angularjs状态后才能工作。

在此之前尝试使用NG2状态时,控制台中没有任何内容(已为ui-router启用了跟踪)。

我已经被这个问题困扰了好几天了,我没有主意...

ng1hello-具有角分量的ng1状态 ng2hello-具有角分量的角状态 ng1hi-具有角度分量的ng1状态 ng2hi-具有角分量的ng2状态

情况1:

  1. 重新加载“ /”:确定。
  2. 单击ui-sref以获取“ ng1hello”。好
  3. 单击ui-sref以获取“ ng2hello”。好
  4. 单击ui-sref以获取“ ng2hi”。好

情况2:

  1. 重新加载“ /”:确定。
  2. 单击ui-sref以获取“ ng2hello”。不好
  3. 单击ui-sref以获取“ ng2hi”。不好
  4. 单击ui-sref以获取“ ng1hello”。好
  5. 单击ui-sref以获取“ ng2hello”。好
  6. 单击ui-sref以获取“ ng2hi”。好

情况3:

  1. 在“ / ng1hello”上重新加载,确定。

情况4:

  1. 在“ / ng2hello”上重新加载不是很好。

编辑: 我在这里在Stackblitz中重现了这个问题: https://angular-hybrid-issue.stackblitz.io/ https://stackblitz.com/edit/angular-hybrid-issue

a314672413 回答:UI-路由器混合:在触发具有NG2组件的NG1状态之前,NG2状态不起作用

我显然使用了错误的方法来获取main.ts(角度上下文)中的UrlService

原是:

    import {getUIRouter} from "@uirouter/angular-hybrid";
    const urlService: UrlService = getUIRouter(platformRef.injector).urlService;

应该是:

const urlService: UrlService = platformRef.injector.get(UrlService); 

https://github.com/ui-router/angular-hybrid/issues/368

本文链接:https://www.f2er.com/3165470.html

大家都在问