вывожу их через пайп projects$ | async
Как мне отследить момент получения данных? Хочу контролировать флаг isLoading
можно добавить pipe(tap)
Во, точно, забыл. Спасибо
Надо запомнить что tap это side effect, тогда будет легче его применять.
Если запрос рестовый tap для флага не подойдёт в случае ошибки. Тупо не отработает
Юзайте pipe(finalize(() => {}))
хорошее замечание)
А если нужно с данными что-то сделать?
Флаг isLoading не связан с работой с данными
Для самих данных используете tap и catchError
Не спорю, просто спросил)
ngIf c request + через async и спиннером через else тоже будет плохо ошибку обрабатывать Точнее вообще не будет, спиннер будет вечным Под это штуку есть статья у Алексея Зуева как с этим бороться Мало ли, у Вас такая конструкция)
Как статью найти?
Раньше она была тут https://blog.angularindepth.com/angular-show-loading-indicator-when-obs-async-is-not-yet-resolved-9d8e5497dd8
https://codinglatte.com/posts/angular/angular-async-pipe-handle-errors/ Похоже на то, что надо?
Что-то такое, там ещё один пайп-обвязка был, который как раз хендлил состояние ошибки
https://medium.com/angular-in-depth/angular-show-loading-indicator-when-obs-async-is-not-yet-resolved-9d8e5497dd8
Если будет интересно, я делал компонент обработчик, чтобы всякие спиннеры с отписками и подписками постоянно не делать https://link.medium.com/CuhLLCkjmdb Каждый день примерно такой штукой пользуюсь, оч упрощает жизнь Может воодушевитесь и также сделаете себе такой модуль на годы вперёд)
Спасибо, посмотрю, выглядит полезно
Если что, обязательно пишите. С момента статьи я кучу всего в этой штуке доработал - того, что уже десятка полтора проектов требовали. Буду рад рассказать)
на первый взгляд оно не типизировано. я просто директиву для лоадинга использую, а сами запросы оборачиваются в маппер с флагами
По поводу типизации - да, есть проблема. Лично моего скила побороть её не хватает, если подскажите решение, то круть, буду рад перестроиться Тут только отмечу, что подход как в статье я встречал еще в либах ng-zorro-antd и primeNg. Если нужно, могу прям ссылки подогнать Насколько помню, там с типизацией по этой части тоже не оч
По поводу директивы - это явно сложнее решение. И, как мне кажется, чуть менее гибкое. Тут всё таки компонент и изи хендлинг обертки хтмл над любым блоком. Со структурной директивой возможности такие явно сложнее достижимы
не структурная. обычная. но это просто для отображения. у лиса в ngxf было чето подобное. а ваще это на саспенс похоже реактовский
С обычной тогда много всяких фишек теряется, а-ля всякие ngOnInit на обернутых блоках)
это как о.О? куда они деваются :)
Ну с обычной директивой они отреденрятся сразу. Через обертку из статьи контент в теле можно удалять и снова создавать в зависимости от логики
я их говорю, в зависимости от логики, я всегда строю разметку сразу с дефолтными данными. А для необходимых данных есть резолверы
Добрый день. Попробовал использовать pipe описанный в статье https://medium.com/angular-in-depth/angular-show-loading-indicator-when-obs-async-is-not-yet-resolved-9d8e5497dd8. Но получаю ошибки. Не подскажите как решить?
Если vm['data'] написать, лучше не становится?
Вам надо типы добавит в пайп
Да. Это я понимаю. Но этот pipe планирую использовать по проекту и туда могут приходить разные данные
Используйте дженерики в типах
Там объект, у которого известные свойства: дата, изЛоадинг, ерр. Вот дата дженериком может быть
Вы можете прям в темплейте между 1 и 2 строчкой написать <pre>{{vm | json}}</pre> и посмотреть что приходит после асинка
Обсуждают сегодня