Я разрабатываю приложение Workflow для Angular2, которое собирает данные на нескольких вкладках, настраивая поля на каждой вкладке на основе значений предыдущих вкладок, а затем проверяя, что все вкладки правильно заполнены по пути. Я использую маршрутизатор Angular2, чтобы контролировать, какой компонент вкладки отображается, и каждая вкладка использует FormGroup
для обработки проверки формы. (См. Ниже, чтобы получить визуальное представление о иерархии компонентов и о том, как работает приложение.) Мне нужен элегантный способ вычисления достоверности данных во всех вкладках рабочего процесса, без необходимости открывать каждую вкладку для активации своего контроллера и валидаторов FormGroup
. В идеале валидация рабочего процесса для вкладки будет использовать ту же логику, что и валидация табуляции FormGroup
, чтобы держать вещи сухими и последовательными.Как выполнить проверку формы на нескольких вкладках, которые проверяются с помощью FormGroup
По мере того как пользователи касаются полей, я регистрирую «грязное» состояние вкладки в БД, поэтому у меня нет проблем, зная, когда вкладка нетронутая/грязная. Проблема в том, что когда пользователь возвращается к ранее сохраненному рабочему процессу, как мне вычислить действительное/недопустимое состояние для всех данных вкладки, когда пользователь еще не коснулся FormGroup
s на этих вкладках?
Спасибо за любые предложения по шаблонам проектирования, которые могут это сделать!
Несколько деталей дизайна:
- Один компонент маршрута обрабатывает каждый шаг процесса.
- Каждый компонент маршрута использует FormGroup для обработки проверки формы.
- Проверка формы на всех вкладках должна приводить действительные/недопустимые индикаторы для всех шагов рабочего процесса, показанных в заголовке.
- Вкладка может находиться в одном из трех возможных состояний: Нетронутой (серая проверки: пользователь не коснулся любое поля на вкладке пока), Неполного (красная восклицательный: вкладка была затронута и один или больше полей на вкладке недействительны) Действительно (зеленый проверка:. все необходимые поля содержат допустимые значения
Поскольку мы углубляемся в нашу реализацию, я скажу это: Redux не для сердца! Это полная реконструкция того, как вы думаете о состоянии. Он толстый с новым синтаксисом и условностями. Мы выполним то, что нам нужно, и в конечном итоге это будет более элегантно, чем там, где мы начали. Тем не менее, это была крутая кривая обучения, чтобы ускориться. Это определенно не решение посыпания. К счастью, есть хорошие примеры и ресурсы для ngrx. –