【问题标题】:ui-router/angular-hybrid - route not recognized on initial load/reloadui-router/angular-hybrid - 在初始加载/重新加载时无法识别路线
【发布时间】:2018-08-13 15:19:07
【问题描述】:

似乎在初始加载/重新加载时无法识别使用@ui-router/angular-hybrid 在 ng2+ 模块中注册的路由。如果例如,相同的路线正在工作。通过键入 url 进行导航。

我已经关注了@ui-router/angular-hybrid的官方升级文档

这里是 ng2+ AppModule 代码:

const states: NgHybridStateDeclaration[] = [
  {
    name: 'x',
    url: '/x',
    component: XComponent
  }
];

enableProdMode();

@NgModule({
  imports: [
    BrowserModule,
    UpgradeModule,
    UIRouterUpgradeModule.forRoot({states: states}),
    ComponentsModule,
    DirectivesModule
  ],
  declarations: [AppComponent],
  exports: [],
  entryComponents: [],
  providers: [],
  bootstrap: []
})
export class Ng2AppModule {
  constructor(
    @Inject(forwardRef(() => UpgradeModule)) private upgrade: UpgradeModule,
    @Inject(forwardRef(() => Config)) private config: Config
  ) {}

  ngDoBootstrap() {
    this.upgrade.bootstrap(document as any, ['app'], { strictDi: true });
  }
}

以及引导逻辑:

AppModule.config([
  '$urlServiceProvider',
  ($urlService: UrlService) => $urlService.deferIntercept()
]);

getConfig()
  .then((config: Config) => {
    console.log('CONFIG::::', config);
    AppModule.constant('config', config);

    setAngularLib(angular);

    platformBrowserDynamic([
      {
        provide: Config,
        useValue: config
      }
    ])
      .bootstrapModule(Ng2AppModule)
      .then(platformRef => {
        platformRef.injector.get<NgZone>(NgZone).run(() => {
          const urlService = platformRef.injector.get(UIRouter).urlService;

          urlService.listen();
          urlService.sync();
        });

        downgradeSharedComponents(AppModule);
      });
  })

附:现有的 angularjs 路由工作正常,问题出在 ng2+ 模块中注册的路由。

感谢任何帮助,谢谢^^

【问题讨论】:

    标签: angularjs angular typescript angular-ui-router angular-hybrid


    【解决方案1】:

    设法自己解决了这个问题,并想发布答案以防万一有人遇到类似问题。 原来我们在旧的 angularjs 代码中有一个奇怪的逻辑,它推迟了$urlRouter url 同步:

    $urlRouterProvider.deferIntercept();
    ...
    $urlRouter.sync();
    

    一旦删除,上述问题就消失了。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 2017-08-18
      • 2016-05-03
      • 2016-02-08
      • 2014-11-18
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多