Skip to content

Commit 85b9424

Browse files
committed
docs(material/form-field): Update example to not call function in template (#28748)
(cherry picked from commit fc43fff)
1 parent 0a15c54 commit 85b9424

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

pkg-externals.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ PKG_EXTERNALS = [
1919
"@angular/common/http/testing",
2020
"@angular/common/testing",
2121
"@angular/core",
22+
"@angular/core/rxjs-interop",
2223
"@angular/core/testing",
2324
"@angular/forms",
2425
"@angular/platform-browser",
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<div class="example-container">
22
<mat-form-field>
33
<mat-label>Enter your email</mat-label>
4-
<input matInput placeholder="pat@example.com" [formControl]="email" required>
4+
<input matInput
5+
placeholder="pat@example.com"
6+
[formControl]="email"
7+
(blur)="updateErrorMessage()"
8+
required>
59
@if (email.invalid) {
6-
<mat-error>{{getErrorMessage()}}</mat-error>
10+
<mat-error>{{errorMessage}}</mat-error>
711
}
812
</mat-form-field>
913
</div>

src/components-examples/material/form-field/form-field-error/form-field-error-example.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import {Component} from '@angular/core';
2+
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
23
import {FormControl, Validators, FormsModule, ReactiveFormsModule} from '@angular/forms';
34
import {MatInputModule} from '@angular/material/input';
45
import {MatFormFieldModule} from '@angular/material/form-field';
6+
import {merge} from 'rxjs';
57

68
/** @title Form field with error messages */
79
@Component({
@@ -14,11 +16,21 @@ import {MatFormFieldModule} from '@angular/material/form-field';
1416
export class FormFieldErrorExample {
1517
email = new FormControl('', [Validators.required, Validators.email]);
1618

17-
getErrorMessage() {
19+
errorMessage = '';
20+
21+
constructor() {
22+
merge(this.email.statusChanges, this.email.valueChanges)
23+
.pipe(takeUntilDestroyed())
24+
.subscribe(() => this.updateErrorMessage());
25+
}
26+
27+
updateErrorMessage() {
1828
if (this.email.hasError('required')) {
19-
return 'You must enter a value';
29+
this.errorMessage = 'You must enter a value';
30+
} else if (this.email.hasError('email')) {
31+
this.errorMessage = 'Not a valid email';
32+
} else {
33+
this.errorMessage = '';
2034
}
21-
22-
return this.email.hasError('email') ? 'Not a valid email' : '';
2335
}
2436
}

0 commit comments

Comments
 (0)