ui-router/angular-hybrid - маршрут не распознан при начальной загрузке / перезагрузке

Кажется, что маршруты, которые зарегистрированы в модуле ng2+ с использованием @ui-router/angular-hybrid не распознаются при начальной загрузке / перезагрузке. Тот же маршрут работает, если, например, навигация осуществляется путем ввода 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);
      });
  })

PS Существующие маршруты angularjs работают правильно, проблема в маршрутах, зарегистрированных в модуле ng2+.

Любая помощь приветствуется, спасибо ^^

1 ответ

Удалось выяснить это самостоятельно и хотел опубликовать ответ на случай, если кто-нибудь столкнется с подобной проблемой. Оказалось, у нас была странная логика в нашем старом коде angularjs, который откладывал $urlRouter синхронизация URL:

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

После удаления проблема, описанная выше, исчезла.

Другие вопросы по тегам