aot и buildOptimizer? Angular 8
const baseRoutes: Routes = [
{
path: "",
component: MyComponent,
children:
window.innerWidth <= TABLET_MAX_WIDTH
? mobileChildRoutes
: desktopChildRoutes
}
];
@NgModule({
imports: [RouterModule.forChild(baseRoutes)],
exports: [RouterModule]
})
Насколько я понимаю, в момент компиляции как раз генерируются метаданные для компонентов/модулей, так что, возможно, ангулар посчитал и зашил метаданные из декоратора в moduleDefinition
Ваша объяснение для меня сложно), подскажите, пожалуйста, как это исправить?
Это как-то странно выглядит писать там условия
все работает при ng serve.
Именно с prod конфигурацией?
возможно. у меня стоит задача грузить разные роуты в зависимости от разрешения дисплея.
да, в проде подставляется не тот роут. вычислил что если отключить аот и билдоптимизацию, работает. Но нужно с ними естественно запустить)
Резолвить модуль в MyComponent
правильней будет регистрировать все роутеры, но пускать по Guard'у
а как быть если роуты совпадают? task/id task/id для мобили сделать префикс m, /m/task/id ?
это не запрещено, префикс не обязательно делать
вот рабочее решение https://stackblitz.com/edit/angular-j2ln94?file=src%2Fapp%2Fapp.component.html
Ого, я и забыл про матчеры. Сильно, сильно
@definitelyfakename Спасибо! Матчеры помогли! Как я понял при включенном aot и buildOptimizer Ангуляр отрабатывает выражения один раз, при билде. Поэтому в деве работало, а после билда нет. Я игрался с матчерами с час, заработало! Главное перед матчером не ставить path: "" , не знаю почему, но он тогда не работает. 6 часов всего потратил на эту проблему((( Вот как я сделал https://gist.github.com/evoytenkoapps/0651a55dcb5f66f59cf74eed2678f007
Лучше @maxkorz поблагодарите
Обсуждают сегодня