UI-router hybrid:在触发具有 NG2 组件的 NG1 状态之前,NG2 状态不工作

UI-router hybrid: NG2 states not working before an NG1 state with an NG2 component is triggered

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

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

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

我关注了 guide @ https://angular.io and the guide at https://github.com/ui-router/angular-hybrid 的迁移,除了 Angular 中的状态定义外,一切似乎都正常。它们仅在 angularjs 状态与 Angular 组件被触发后才工作。

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

我已经被困在这个问题上好几天了,我没有想法...

ng1hello - 带有 angular 组件的 ng1 状态 ng2hello - angular 状态与 angular 组件 ng1hi - 具有 angular 组件的 ng1 状态 ng2hi - ng2 状态 angular 分量

案例一:

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

案例二:

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

案例三:

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

案例 4:

  1. 重新加载“/ng2hello”不正常。

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

我显然使用了错误的方法来获取 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