Pull to refresh
3
0
Евгений Добрянский @essome

Software Architect

Send message
  1. Разделение ответственности, инпут не должен заниматься ни валидацией ни выводом ошибок, только отображение

  2. Если вы поставите внешний пакет с инпутом/любым другим контролом - придётся ему делать обертку и опять писать обработку ошибок

  3. Если надо задать конфиги для вывода ошибок, например показать ошибку сбоку, а не снизу, то придётся пробрасывать конфиги из инпут в компонент ошибок

Так у вас инпут отвечает за вывод ошибок, а надо ошибки отдельно

  1. Компоненты изолированы друг от друга, внутрь нет

  2. Для кастомного, да

  3. В компоненте создана реактивная форма, у каждого поля своя валидация

  4. Ошибки возьмёт из конфигов модуля, у каждой ошибки есть свой код

  5. Для горизонтального расположения он тоже сделает снизу, но по желании тут можно добавить ещё одну директиву, для позиционирования

А теперь сделайте так чтобы ошибка была под каждым полем

типа если в течение ни в одном из компонентов не импортировать какой-то другой компонент, то он попадает в сборку.


Если этот компонент внутри модуля который используется — конечо, ведь этот компонент может не использоваться при сборке, но использоваться в рантайме.
Но ничто не мешает вам сделать отдельные модули для нужных компонентов, а делается это очень легко.

@NgModule({
  declarations: [FirstComponent],
  exports: [FirstComponent]
})
export class FirstComponentModule {
  
}

@NgModule({
  declarations: [SecondComponent],
  exports: [SecondComponent]
})
export class SecondComponentModule {
  
}


Пока не импортируешь FirstComponentModule — FirstComponent не попадет в сборку.
Ну например можно сделать так, showErrorsDirective возьмет внутри себя все инпуты и в случае ошибки выведет сообщение под инпутом, как подобное сделать в реакте?
Тут нет реализации самой директивы, а лишь пример использования.
<form showErrosDirective>
  <div>
    <label>Имя</label>
    <input type="text" formControlName="name">
  </div>
  <input type="text" formControlName="name1">
  <input type="text" formControlName="name2">
  <input type="text" formControlName="name3">
  <input type="text" formControlName="name4">
</form>


Ну а по поводу:
С помощью инструмента мы решаем задачу пользователя

Все задачи пользователя можно решить на чистом html, css, js, смысл это обсуждать в контексте реакт и angular? Важно именно удобство разработки
Там в примере был react + mobx против передачи данных через input/output в angular, я лишь написал, что в angular можно так же писать со стейтом и не использовать input/output.
Что можно сделать на ангуляре такого что будет сложно повторит на реакте?

Директивы, структурные директивы, пайпы как минимум.
Прокидывание переменных в Ангуларе это боль. Все эти Input Output

1. В этом легко разобраться и это очень логично, особенно когда надо сделать внешний ивент отличный от onclick/onchange
2. Вас никто не заставляет это использовать, есть ngxs, ngrx, akito и куча других стейтов.
3. Output гибче в отличии от обычных props в реакт, например мы можем в ts написать this.component.outputEvent.subscribe(//code) так же можем внутри самого компонента в одном месте эмитить значение, в другом делать что-то с этим значением, но это зависит от того являетесь ли вы сторонником rx подхода или нет.

ExpressionChangedAfterItHasBeenCheckedError забыл как страшный сон.

Не видел такой ошибки года 3

Архитектура сама себя не сделает ни там ни там. Можно породить кошмар на ровном месте и в Ангуларе пожалуй это сделать проще. Библиотеки в реакте довольно типичны — Formik, Yup, axios/superagent. Голову ломать не приходится.

Только вот в angular есть по дефолту отличный httpclient, который хорошо интегрирован и типизирован.
Так же там есть:
1. Роутер
2. Реактивные формы
3. Обычные формы
4. Control Value Accessor очень удобная штука, с ее помощью любой компонент может иммитировать браузерные
5. Пайпы
6. Директивы
7. Angular cdk который очень упрощает разработку, например модалки, порталы итд
8. Поддержка PWA
9. DI
10. rxjs и мало того, сам angular построен на нем, а не сбоку прикручен
11. Отличный cli
12. Schematics
13. Модульность
14. Компоненты поддерживают стили + изолируют их при необходимости

Так же мне нравится что:
1. Angular не боится ломать обратную совместимость, только так фреймворк может развиваться.
2. Обновляться легко за счет ng update в angular cli, главное не затягивать с обновлением, сразу с 4 на 12 версию будет тяжело обновиться. а с 11 на 12 займет пол часа.

По вашим словам ясно, что вы не изучили angular. Он намного гибче реакт

Только нормальные разрабы и в классах норм напишут, при этом не потеряют удобства классов, а говнокодеры и в функциях логики наплодят

Если отложить те деньги которые я бы в теории потратил на детей, то мне хватит чтобы за мной смотрели модели Виктория сикрет

Десятилетнему маку так же можно сделать, вы новый синкпад попробуйте

США точно ничего не запретит, им это просто не выгодно, но смысл от политоты вообще?

Так вас никто не будет заставлять ставить сторонние магазины

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

Но он уступакет макбуку по многим параметрам

  1. Пластик

  2. Экран

  3. Трекпад

  4. Время жизни от батареи

  5. Размер и вес

Значит вы не пользуетесь дорогими ноутбуками и они вам не нужны так же как и макбук.

Но когда хочется:

  1. Хороший процессор

  2. ssd

  3. Маленькие рамки

  4. цельный металлический корпус

  5. 4к дисплей

  6. легкий (что-бы можно было в одной руке носить)

  7. Батарея 8+ часов

С такими требованиями ноутбуки на windows часто получаются дороже.

Нормально так, за безобидные комментарии минус в карму и возможность комментировать раз в 5 минут, хорошо дискуссию ведете, очень помогаете хабру с аудиторией, сразу отпадает желание пользоваться ресурсом.

Information

Rating
Does not participate
Location
Ивано-Франковск, Ивано-Франковская обл., Украина
Date of birth
Registered
Activity