Size: a a a

Angular - русскоговорящее сообщество

2021 March 31

Кm

Кирилл mrDoode in Angular - русскоговорящее сообщество
Валера Солдатов
Если вы просто хотите сделать сайтик за пару дней и не получить никакого опыта от взаимодействия между компонентами, то вы можете делать это в одном файле :) Поэтому я и говорю, смотря какие цели вы преследуете
Вообще это было тестовое, которое мне завернули с формулировкой "очень простая структура проекта", потому и пытаюсь разобраться)
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
Кирилл mrDoode
Вообще это было тестовое, которое мне завернули с формулировкой "очень простая структура проекта", потому и пытаюсь разобраться)
вот в частности как раз про это )
источник

ВС

Валера Солдатов... in Angular - русскоговорящее сообщество
Кирилл mrDoode
Вообще это было тестовое, которое мне завернули с формулировкой "очень простая структура проекта", потому и пытаюсь разобраться)
Никто не оценит, если вы в тестовом сделаете портянку на одной странице, конечно же. От вас явно хотят хоть какое-то разделение
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
Евгений Удалов
ну как бы должно. попробуй
нет, canDeactivate работает только с конкретным роутом у которого он привязан - даже  к чайлдам не применяется
источник

M

Maksim in Angular - русскоговорящее сообщество
Кирилл mrDoode
Всем привет, такой вопрос. У меня простое одностраничное приложение без роутинга — страница прогноза погоды.
На странице присутствуют элементы выбора города, выбора метрики, основная и дополнительная инфа по погоде.
Вопрос: следовало бы в структуре проекта эти элементы разбивать на отдельные компоненты?
Я считаю, что если элемент не переиспользуется и не несёт большой и сложно логики за собой, то выносить его в отдельный компонент смысла нет
Стоит конечно. Визуально разделите свою страницу на компоненты, и начинайте разделять код, чтобы все не лежало в одной куче. Если в компоненте больше 100 строк (TS или HTML) то его скорее всего стоит разнести на несколько компонентов. Например, даже селект выбора города должен быть самостоятельным CVA компонентом, т.к. он обычно тянет за собой логику запроса списка городов с бэкенда
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
Alex Gro
нет, canDeactivate работает только с конкретным роутом у которого он привязан - даже  к чайлдам не применяется
можно в конструкторе пройтись циклом по роутам и добавить каждому, чтобы не добавлять руками к каждому отдельно
типа
constructor(router: Router) {
       router.config
           .filter((route: Route) => route.path !== 'path')
           .forEach((route: Route) => this.addGuard(route));
   }

   private addGuard(route: Route): void {
       route.canActivate = route?.canActivate ?
           [SomeGuard].concat(route.canActivate) : [SomeGuard];
   }
источник

Кm

Кирилл mrDoode in Angular - русскоговорящее сообщество
Понял, всем спасибо за ответы!
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
Евгений Удалов
можно в конструкторе пройтись циклом по роутам и добавить каждому, чтобы не добавлять руками к каждому отдельно
типа
constructor(router: Router) {
       router.config
           .filter((route: Route) => route.path !== 'path')
           .forEach((route: Route) => this.addGuard(route));
   }

   private addGuard(route: Route): void {
       route.canActivate = route?.canActivate ?
           [SomeGuard].concat(route.canActivate) : [SomeGuard];
   }
опять же во всех модулях особенно lazy нужно будет дублировать эту логику
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
Alex Gro
опять же во всех модулях особенно lazy нужно будет дублировать эту логику
ну ты прямо волшебную пилюлю ищешь
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
или как там. серебряную пулю
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
Может в глобальном сервисе подписаться на роутер и отслеживать его изменения чтобы отказаться вообще от гвардов
источник

M

Maksim in Angular - русскоговорящее сообщество
а может просто прописать на всех роутах canDeactivate :)
источник

АФ

Андрей Фастовский... in Angular - русскоговорящее сообщество
Alex Gro
опять же во всех модулях особенно lazy нужно будет дублировать эту логику
можно в хелпер вынести чтобы не дублировать
источник

АФ

Андрей Фастовский... in Angular - русскоговорящее сообщество
Alex Gro
опять же во всех модулях особенно lazy нужно будет дублировать эту логику
а вообще сколько у вас роутов? мб вы перемудрили и действительно проще и нагляднее в самих роутах прописать?
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
10-15 lazy модулей по 3-10 роутов в каждом
источник

АФ

Андрей Фастовский... in Angular - русскоговорящее сообщество
прилично
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
Да и отслеживать потом будет сложно, что ктото забыл в новом модуле прописать конструктор
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
Поэтому хочу единую точку входа
источник

M

Maksim in Angular - русскоговорящее сообщество
а что делает ваш guard?
источник

AG

Alex Gro in Angular - русскоговорящее сообщество
Запрещает уходить со страницы если редактирование не завершено ( предупреждает что изменнеия будут потеряны )
источник