5

我有一个大型 angularjs 1.7.4 应用程序,其 UI-router 在 HTML5 模式下具有多个入口点。

(项目使用 babel 7.6 编译 typescript 和 corejs3 polyfill,所以我没有使用 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. 单击“ng1hello”的 ui-sref。好的
  3. 单击“ng2hello”的 ui-sref。好的
  4. 单击“ng2hi”的 ui-sref。好的

案例二:

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

案例3:

  1. 在“/ng1hello”上重新加载 OK。

案例4:

  1. 在“/ng2hello”上重新加载不行。

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

4

1 回答 1

4

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

曾是:

    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

于 2019-11-08T20:21:54.977 回答