Как я могу установить недопустимое значение "mat-form-field"? - PullRequest
0 голосов
/ 21 мая 2018

Входные данные: угловой 6, угловой материал 2.

Мой пользовательский параметр проверки соответствия паролей недействителен для "passGroup".Пример:

         <div ngModelGroup="passGroup" password-matcher #passGroup="ngModelGroup">
             <div class="formGroup">
                <mat-form-field>
                    <input
                        matInput
                        type="password"
                        class='inputs'
                        [(ngModel)]='reg.password'
                        name='password'
                        required
                        minlength="8"
                        (input)='onChangeReg(reg)'
                        >
                </mat-form-field>
            </div>

            <div class="formGroup">
                <mat-form-field class="example-full-width">
                    <input
                        matInput
                        type="password"
                        class='inputs'
                        [(ngModel)]='reg.repeatPassword'
                        name='repeatPassword'
                        required
                        minlength="8"
                        (input)='onChangeReg(reg)'
                        >
                </mat-form-field>
            </div>
        </div>

Как я могу установить недействительным значение mat-form-field, если ngModelGrou p равно invalid?например: <mat-form-field setValidation='passGroup.invalid'>

1 Ответ

0 голосов
/ 23 мая 2018

Теоретически, вам нужно предоставить пользовательский ErrorStateMatcher для MatInput элемента управления.Угловой материал имеет пример здесь .В функции ErrorStateMatcher isErrorState вам необходимо получить доступ к родительской группе элемента управления и использовать его состояние для возврата состояния для элемента управления поля.

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

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

...