Проверка настраиваемого валидатора нескольких строк в реактивных формах Angular 4

У меня очень простая проблема, которую я не могу понять. Во-первых, у меня есть ингредиент, который имеет утвержденное количество. И этот ингредиент имеет несколько сроков годности. Тем не менее, я хочу проверить, не превышают ли мои даты истечения срока действия «количество для передачи» утвержденное количество.

Как мне это проверить? Я уже закончил некоторые части, НО этот я не мог сравнить, так как он должен сверять несколько строк «количества для передачи» с одним утвержденным количеством. Вот ссылка на код ниже:

РАЗВЕТВЛЕННАЯ ССЫЛКА ЗДЕСЬ

ПРИМЕР

customValidator(group: any) {
    if ((group.controls.transfer_qty.value > group.parent.parent.controls.approved_qty.value)) {
      return { out1: true }
    }
    if ((group.controls.transfer_qty.value > group.controls.available_qty.value)) {
      return { out2: true }
    }
    return null;
  }

comment
Это займет некоторое время , :)   -  person Vivek Doshi    schedule 05.02.2018
comment
Это немного сложно, так как вам нужны 2 проверки для группы входов.   -  person Vivek Doshi    schedule 05.02.2018


Ответы (1)


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

Вы можете реализовать настраиваемые элементы управления формой, используя ControlValueAccessor.

Я изменил ваш пример, чтобы показать, что я имею в виду: Модифицированный пример

Пример без реализации ControlValueAccessor

person than    schedule 06.02.2018
comment
Ваш код работает точно так же, как мой код. Моя проблема заключается в том, что когда утвержденное количество равно 100 и имеет две даты истечения срока действия, вы вводите 100 в первом количестве для перевода и 2 во втором. Он должен выдать ошибку. это моя проблема - person Joseph; 06.02.2018
comment
попробовал сценарий, о котором вы говорите, работает как положено, можете ли вы проверить еще раз, я недавно внес изменения - person than; 06.02.2018
comment
Ссылка та же? - person Joseph; 06.02.2018
comment
Проблема все та же. Можете ли вы проверить мой отредактированный вопрос. Я прикрепил картинку. - person Joseph; 06.02.2018
comment
На моем рисунке я ввел 100 и 1. Он должен вывести ошибку, так как это больше утвержденного количества 100. - person Joseph; 06.02.2018
comment
О, поправьте меня, если я ошибаюсь, поэтому сумма введенных количеств не должна превышать утвержденного количества? - person than; 06.02.2018
comment
Да. Кстати, ваш код немного длинный. Можешь отредактировать мой код? - person Joseph; 06.02.2018
comment
Сообщение об ошибке, которое вы дали, когда оно превышает утвержденное количество, неверно. Когда я набираю 100 и 1 в поле ввода - person Joseph; 06.02.2018
comment
изменил ваш пример - ссылка выше в ответе, надеюсь, что это поможет - person than; 07.02.2018
comment
Я имею в виду, вы не можете изменить структуру моего кода. Просто добавьте что-нибудь, но ничего не меняйте - person Joseph; 10.02.2018
comment
Я имею в виду, вы не можете изменить структуру моего кода. Просто добавьте что-нибудь, но ничего не меняйте - person Joseph; 11.02.2018
comment
Сначала вы приняли это как ответ, теперь вы минусуете, всего наилучшего, я пытался помочь - person than; 11.02.2018
comment
Я не минусовал тебя. Кто-то еще проголосовал за вас - person Joseph; 11.02.2018