169 похожих чатов

Есть так называемые "документы" (формы для заполнения и т.д.). В

данный момент их 3 типа всего. Единственное что их различает - +- несколько полей, все остальное практически одинаково.
При открытии модалки, в data я передаю documentId, и documentType. В самой модалке у меня
1) панель с кнопками (универсальная для всех компонентов, находится в родительском компоненте).
2) компонент, в зависимости от того какой documentType был передан (в данный момент всего 3 компонента)
2.1) компонент с формой для заполнения данными
2.2) компонент с таблицей
И вот теперь вопросы:
1. Для каждого типа документа я создаю отдельный компонент, в который из сервиса получаю данные и через @Input() передаю их в форму и таблицу. Правильный ли такой подход, или же лучше в компоненте с формой и таблицей через сервис получать данные?
2. Для того чтобы вернуть данные обратно в родительский компонент, использую @ViewChild или @Output(). Может быть проще возвращать данные через service (еще не знаю каким образом точно)??
3. В данный момент кнопки, активны или не активны, в зависимости коректные ли данные. Для этого я постоянно делаю проверки, из-за чего иногда может возникать ошибка ExpressionChangedAfterItHasBeenCheckedError (как писал рание, и уже практически разобрался). Как еще можно реализовать проверки на корректность?
4. Правильный ли такой подход в целом? Ведь у меня 1 модалка, в которой просто выбирается нужный компонент. Может проще для каждого документа создавать свои модалки? Но тогда больше файлов и сам модуль будет больше.
Буду благодарен за любую помощь)))

1 ответов

6 просмотров

1. Лучше разбивать компоненты на обособленные кирпичики, и если есть возможность, то конфигурировать конкретный тип этими компонентами. Например, можно реализовывать компоненты адаптеры между конкретным контрактом документа и конкретным компонентом, который отображает "таблицу". Эти адаптеры по большей части должны быть обособленными. 2. В случае, если необходимо воздействовать с родительским компонентом, то Output предпочтительнее. Выходит немного больше кода, но зато прекрасно видно связи между компонентами. 3. Нужен более конкретный пример, где возникает данная ошибка. Но отмечу, что если используется полностью реактивный подход, то такая ошибка не будет встречаться. 4. Иметь единый компонент для отображения любого типа сущности - хороший подход.

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта