угловой универсальный и переводы

После добавления ленивой загрузки у меня возникли проблемы с мерцанием (перерисовать вид после рендеринга на стороне сервера с универсальным модулем). Я исправил это с помощью initialNavigation: 'enabled' И его исправление мерцания. Но эта опция нарушила все маршруты с префиксом lang в URL-адресе и все маршруты типа ' /ru/user/deposit' отображается как домашняя страница без переводов на стороне сервера. Маршруты без префикса хорошо отображаются на стороне сервера.

app.routering.module.ts

const routes: Routes = [

  { path: '', redirectTo: 'sport/esports', pathMatch: 'full' },
  {
    path: 'sport/esports',
    loadChildren: './modules/matches/matches.module#MatchesModule',
  },
  {
    path: 'blog',
    loadChildren: './modules/blog/blog.module#BlogModule',
  },
  {
    path: 'static',
    loadChildren: './modules/static/static.module#StaticModule',
  },
  {
    path: 'slots',
    loadChildren: './modules/slots/slots.module#SlotsModule',
    canActivate: [FreeLootGuard]
  },
  {
    path: 'user',
    loadChildren: './layouts/user-layout/user-layout.module#UserLayoutModule'
  },
  {
    path: '**', redirectTo: '/sport/esports', pathMatch: 'full'
  }
];
@NgModule({
  imports: [
    LocalizeRouterModule.forRoot(routes, {
      parser: {
        provide: LocalizeParser,
        useFactory: (translate, location, settings) =>
          new ManualParserLoader(translate, location, settings, ['en', 'ru', 'pl', 'es', 'de', 'tr', 'fil', 'pt', 'zh'], ''),
        deps: [TranslateService, Location, LocalizeRouterSettings]
      },
      alwaysSetPrefix: false,
      useCachedLang: false
    }),
    RouterModule.forRoot(routes, {initialNavigation: 'enabled'}),
  ],
  exports: [RouterModule]
});

app.server.module.ts

export function translateFactory(transferState: TransferState) {
  return new TranslateServerLoader('/assets/i18n/', '.json', transferState);
}

export function localizeLoaderFactory(translate: TranslateService, location: Location, settings: LocalizeRouterSettings) {
  return new LocalizeServerLoader(translate, location, settings);
}

if (environment.sentryUrl) {
  SentryNode.init({
    dsn: environment.sentryUrl
  });
}

@Injectable()
export class SentryNodeErrorHandler implements ErrorHandler {
  constructor() {}
  handleError(error) {
    let message: any;
    let err: any;
    if (environment.sentryUrl) {
      if (error.status) {
        if (error && error.error && error.error.messages && error.error.messages.length) {
          message = error.error.messages[0];
        } else {
          message = error.message || 'Not found';
        }
      } else if (error.rejection) {
        message = error.toString();
      } else {
        message = error;
      }
      err = typeof message === 'string' ? new Error(message) : error;
      SentryNode.captureException(error.originalError || err);
    } else {
      console.error(error);
    }
  }
}

@NgModule({
  imports: [
    AppModule,
    ServerModule,
    ModuleMapLoaderModule,
    ServerTransferStateModule,
    TranslateModule.forRoot({
      loader:{
        provide: TranslateLoader,
        useFactory: translateFactory,
        deps: [TransferState]
      }
    })
  ],
  providers: [
    { provide: ErrorHandler, useClass: SentryNodeErrorHandler },
    { provide: CookieService, useClass: CookieBackendService },
    // Add universal-only providers here
  ],
  bootstrap: [ AppComponent ],
})
export class AppServerModule {}

person Viktor Kolomiets    schedule 17.07.2019    source источник
comment
Любая ошибка на стороне сервера или на стороне клиента?   -  person David    schedule 18.07.2019
comment
Похоже нет. Я предполагаю, что это ошибка в двух расширениях ngx-translate и universal   -  person Viktor Kolomiets    schedule 18.07.2019


Ответы (1)


проблема была решена с помощью инициализатора https://medium.com/@fessbespalov/enabling-initialnavigation-with-localizerouter-and-angular-universal-8d514f1faad9

person Viktor Kolomiets    schedule 18.07.2019
comment
Настройки initialNavigation здесь не помогают :/ - person Vincent Sels; 14.09.2020