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

Ste*_*erg 5 angular-ui-router angular angular-hybrid

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

(该项目使用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组件的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

Ste*_*erg 4

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

曾是:

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

应该是:

const urlService: UrlService = platformRef.injector.get(UrlService); 
Run Code Online (Sandbox Code Playgroud)

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