Я создаю клиентское приложение Angular2. В настоящее время я работаю над компонентами членства и интегрирую компоненты на стороне клиента с MVC6 vNext Identity v3. Я написал пользовательские Angular2 валидаторы паролей следующим образом:
needsCapitalLetter(ctrl: Control): {[s: string]: boolean} {
if(!ctrl.value.match(/[A-Z]/))
return {'needsCapitalLetter': true}
return null;
}
needsLowerLetter(ctrl: Control): {[s: string]: boolean} {
if(!ctrl.value.match(/[a-z]/))
return {'needsLowerLetter': true}
return null;
}
needsNumber(ctrl: Control): {[s: string]: boolean} {
if(!ctrl.value.match(/\d/))
return {'needsNumber': true}
return null;
}
needsSpecialCharacter(ctrl: Control): {[s: string]: boolean} {
if(!ctrl.value.match(/[^a-zA-Z\d]/))
return {'needsSpecialCharacter': true}
return null;
}
Это отлично работает, и я люблю Angular2, но теперь я пытаюсь написать валидатор, который проверяет, что "Confirm Password" равен "Password". Для этого мне нужно иметь возможность проверять одно поле против другого. Я могу легко сделать это на уровне компонентов, и просто проверить размытие, или отправить, или любое количество других способов, но это обходит систему проверки w490 > ngForm. Я очень хотел бы выяснить, как написать Angular2 Validator для поля, которое может проверять значение другого поля, передавая имя другого поля или что-то близкое к этому. Похоже, что это должна быть возможность, поскольку это было бы необходимо в почти любом сложном пользовательском интерфейсе бизнес-приложений.