angular / angular/components

bug(mat-form-field): mat-error not displayed when form field is in an error state.

Open
#19,960 2 comments 1 reaction 0 assignees View on GitHub
area: material/form-field P3
Dominant language
TypeScript
Stars
25k
Forks
6.8k
Avg merge
1d 8h
Merged PRs (30d)
91

Description

#### Reproduction

The Stackllitz app (https://stackblitz.com/edit/yz1dhz-m5re6l) renders two form controls in a form group:

1. A [mat-select](https://material.angular.io/components/select/overview)
2. A [custom form field control](https://material.angular.io/guide/creating-a-custom-form-field-control) (wraps Codemirror)

Both form controls are immediately invalid because they are initailized with null and have a required validator. The error message for each form control is displayed in ``.

Steps to reproduce:
1. Select "Foo" from the `` form control to set the corresponding validator on the second form control (the custom form field).
3. The error message for the second form control is correctly displayed `{ "required": true, "message": "Must be Foo" }`.
4. Enter the value "Foo" into the second form control to move the form control to a valid state.
5. The `` is shown. All good so far :)
6. Select "Bar" from the first form control to set a different validator.
7. The second form control is in an error state and the form field is displayed with a solid red color underline.
8. `` is NOT displayed and the `` is.

![image](https://user-images.githubusercontent.com/1623996/87334183-c3f47700-c52d-11ea-8359-f4e8290d76f2.png)


#### Expected Behavior

`` is hidden and `` is displays `{ "message": "Must be Bar" }`

#### Actual Behavior

`` is hidden and `` is displays `I am a hint.`

#### Environment

- Angular: 9.1.6
- CDK/Material: 9.2.3
- Browser(s): Chrome Version 83.0.4103.116 (Official Build) (64-bit)
- Operating System (e.g. Windows, macOS, Ubuntu): ArchLinux

Contributor guide

Open the contributing guide

Research direction

Start with the linked StackBlitz reproduction and compare the mat-select with the custom form field control wrapping Codemirror. Trace how mat-form-field chooses between mat-error and mat-hint after the validator changes; done means the error message for "Must be Bar" is displayed and the hint is hidden.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.