Size: a a a

2020 August 11

B

Bohdan in Angular Kyiv
Ждём запись)!👍
источник

D

Dmytro in Angular Kyiv
@AlexOkrushko Спасибо за классный доклад и ответы на вопросы. Попробую на проекте заменить store на component-store: как раз есть 100% подходящая страница.
источник

A

Antony in Angular Kyiv
Alex Okrushko
Спасибо!
в эффекте все довольно структурировано получается, и почти всегда по одному и тому же шаблону:
  // все вызовы getAuthor('id1') проталкивают в этот 👇 Observable
readonly getAuthor = this.effect((ids$: Observable<string | undefined>) => {
   return ids$.pipe(
     // иногда отфильтровать сначала надо
     filter((id): id is string => !!id),
    // очень часто с вызовами API сначала на спиннер поставить
     tap(() => this.updateStatus('loading')),
    // вот тут мы выбираем оператор для избежания race conditions
     switchMap((id) =>
      // вызов самого сервиса
       this.authorService.getAuthor(id).pipe(
         // здесь мы на самом деле засунем полученные данные в сам сейт
         tap({
           next: (author) => {
             this.setAuthor(author);
             this.updateStatus('loaded');
           },
           // и обработаем ошибку
           error: (e) => this.updateStatus('error'),
         }),
         // убедимся, чтобы ошибка не закрывала наш еффект
         catchError(() => EMPTY)
       )
     )
   );
 });
}
Спасибо, теперь этот код читается достаточно straightforward.
Изначально меня насторожило количество действий в одном блоке кода, но наверное это не проблема когда такой шаблон повторяется в остальных местах.
Но всё же интересно, нельзя ли каким-то образом выносить такие вещи как фильтрацию, обработку ошибок, и повторяющиеся сайд-эффекты (как спинер) на более высокий уровень так что бы не нужно было их повторять для каждого эффекта? Возможно иметь какой-то фабричный метод для создания эффектов.
(Но может это слишком ООП подход, оверинжениринг и это убирает гибкость.. у меня сейчас просто поток мысли)
источник
2020 August 12

IG

Ivan Granat in Angular Kyiv
я так понимаю это не очень хорошая практика? как бы лучше заполнять таблицу? неужели в любом случае прийдется применять проверку по каждому полю ?
источник

IG

Ivan Granat in Angular Kyiv
мне не нравится что приходится использовать цикл, а потом приходится проверять каждую колонку на то какая это колонка...
может кто знает как по другому?
источник

AO

Alex Okrushko in Angular Kyiv
Dmytro
@AlexOkrushko Спасибо за классный доклад и ответы на вопросы. Попробую на проекте заменить store на component-store: как раз есть 100% подходящая страница.
👍 мне интересно что выйдет - держи в курсе 🙂
источник

AO

Alex Okrushko in Angular Kyiv
Antony
Спасибо, теперь этот код читается достаточно straightforward.
Изначально меня насторожило количество действий в одном блоке кода, но наверное это не проблема когда такой шаблон повторяется в остальных местах.
Но всё же интересно, нельзя ли каким-то образом выносить такие вещи как фильтрацию, обработку ошибок, и повторяющиеся сайд-эффекты (как спинер) на более высокий уровень так что бы не нужно было их повторять для каждого эффекта? Возможно иметь какой-то фабричный метод для создания эффектов.
(Но может это слишком ООП подход, оверинжениринг и это убирает гибкость.. у меня сейчас просто поток мысли)
Я пробовал выносить в том же ngrx/effect. act operator: https://github.com/ngrx/platform/blob/master/modules/effects/src/act.ts

В итоге получалось то же самое.

В ComponentStore effect, можно кое-что вынести (response handling) но я не хотел в 10 версию и всё сразу. И так много нового 🙂
источник

AO

Alex Okrushko in Angular Kyiv
Ivan Granat
мне не нравится что приходится использовать цикл, а потом приходится проверять каждую колонку на то какая это колонка...
может кто знает как по другому?
Мы Material CDK table используем. Если нужна со стилизацией, то Material Table.
https://material.angular.io/cdk/table/overview
источник

IG

Ivan Granat in Angular Kyiv
Alex Okrushko
Мы Material CDK table используем. Если нужна со стилизацией, то Material Table.
https://material.angular.io/cdk/table/overview
так и я использую prime NG
дело в том что мне необходимо рисовать разное содержимое в разные колонки, где-то текст, где-то кнопку, где-то чекбокс.
и выходит что необходимо каждый раз проверять тип колонки чтобы знать что туда рисовать
источник

AO

Alex Okrushko in Angular Kyiv
Ivan Granat
так и я использую prime NG
дело в том что мне необходимо рисовать разное содержимое в разные колонки, где-то текст, где-то кнопку, где-то чекбокс.
и выходит что необходимо каждый раз проверять тип колонки чтобы знать что туда рисовать
Angular Material != Prime Ng
Я не знаю как column header обозначается в prime Ng, но в материал там отдельно обозначаются все column header елементы.
источник

IG

Ivan Granat in Angular Kyiv
я понял, спасибо.
источник

IG

Ivan Granat in Angular Kyiv
Alex Okrushko
Angular Material != Prime Ng
Я не знаю как column header обозначается в prime Ng, но в материал там отдельно обозначаются все column header елементы.
я подумал что это похожие ui либы компонентов и тут важно не то как выглядит в результате приложение, а логика отображения данных на фронте.
источник

AO

Alex Okrushko in Angular Kyiv
Ivan Granat
я подумал что это похожие ui либы компонентов и тут важно не то как выглядит в результате приложение, а логика отображения данных на фронте.
Вроде и тут всё ок: https://www.primefaces.org/primeng/showcase/#/table/basic

Каждый новый td соответствует th
источник

IG

Ivan Granat in Angular Kyiv
Alex Okrushko
Вроде и тут всё ок: https://www.primefaces.org/primeng/showcase/#/table/basic

Каждый новый td соответствует th
действительно, спасибо огромное, что-то я потерялся 😅
источник

ЕБ

Евгений Баранов... in Angular Kyiv
Тоже интересно посмотреть запись как реактовские кальки кочуют по фронтенду. По возможности закрепите в шапке меседж с ссылкой на несколько дней, а топропущу.
источник

DT

Denchik Tymokhin in Angular Kyiv
Евгений Баранов
Тоже интересно посмотреть запись как реактовские кальки кочуют по фронтенду. По возможности закрепите в шапке меседж с ссылкой на несколько дней, а топропущу.
интересно, откуда подход с эффектами и rxjs  написания сервисов для работы со стейтом в реакт перекочевал
источник

ЕБ

Евгений Баранов... in Angular Kyiv
Я о более высоких абстракциях на уровне идеи, а не реализации рассматриваю эти вещи. Каждый крутит педали своего велосипеда, у кого-то самокат, у кого-то трёхколёсный, у кого-то обычный. Лично мне интересно как люди переосмысливают концепты которые им кажутся более удобными или правильными из одних реализаций в другие.
источник

DT

Denchik Tymokhin in Angular Kyiv
"Я о более высоких абстракциях на уровне идеи" - понимаю... ngrx нифига не имеет более высокую абстракцию на уровне идеи
источник

Sergey Фrolov in Angular Kyiv
Евгений Баранов
Тоже интересно посмотреть запись как реактовские кальки кочуют по фронтенду. По возможности закрепите в шапке меседж с ссылкой на несколько дней, а топропущу.
Какие реактовские кальки ты имеешь ввиду?
источник

ЕБ

Евгений Баранов... in Angular Kyiv
Sergey Фrolov
Какие реактовские кальки ты имеешь ввиду?
Та сам по себе State management который никогда не навязывался Angular из коробки. Что делало разработку привычной, но приводило к тем же проблемам что и раньше. К мутициям ссылочных типов в ходе работы приложения и проблемам менее опытных разработчиков их находить. Я потому и хочу посмотреть запись, чтобы понять на каких уровнях человек хочет инкапсулировать данные, насколько больше слабосвязанную структуру мы получим, как будет настроена связь с другими модулями и все такое. В том Энтерпрайзе котором я сейчас работаю, этого очень не хватает. И если у человека есть гибкое решение которое сделает мою работу проще и его можно внедрить частями, то это будет великолепно. Так как нет возможности перетащить весь проект на контроль управления состоянием, никто не выделит на это ресурсов. Но если впихнуть это в рефакторинг, то разрабатывать возможно станет немного легче.
источник