Skip to content

Commit 9422e01

Browse files
committed
docs: add signal form example for mat-select
1 parent 3de1f05 commit 9422e01

4 files changed

Lines changed: 65 additions & 1 deletion

File tree

‎src/components-examples/material/select/index.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export {SelectCustomTriggerExample} from './select-custom-trigger/select-custom-
22
export {SelectDisabledExample} from './select-disabled/select-disabled-example';
33
export {SelectErrorStateMatcherExample} from './select-error-state-matcher/select-error-state-matcher-example';
44
export {SelectFormExample} from './select-form/select-form-example';
5+
export {SelectFormSignalFormExample} from './select-form-signal-form/select-form-signal-form-example';
56
export {SelectHintErrorExample} from './select-hint-error/select-hint-error-example';
67
export {SelectMultipleExample} from './select-multiple/select-multiple-example';
78
export {SelectNoRippleExample} from './select-no-ripple/select-no-ripple-example';
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<form>
2+
<h4>mat-select</h4>
3+
<mat-form-field>
4+
<mat-label>Favorite food</mat-label>
5+
<mat-select [formField]="selectedValue">
6+
@for (food of foods; track food) {
7+
<mat-option [value]="food.value">{{food.viewValue}}</mat-option>
8+
}
9+
</mat-select>
10+
</mat-form-field>
11+
<p> Selected food: {{selectedValue().value()}} </p>
12+
<h4>native html select</h4>
13+
<mat-form-field>
14+
<mat-label>Favorite car</mat-label>
15+
<select matNativeControl [formField]="selectedCar">
16+
<option value="" selected></option>
17+
@for (car of cars; track car) {
18+
<option [value]="car.value">{{car.viewValue}}</option>
19+
}
20+
</select>
21+
</mat-form-field>
22+
<p> Selected car: {{selectedCar().value()}} </p>
23+
</form>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import {Component, signal} from '@angular/core';
2+
import {MatInputModule} from '@angular/material/input';
3+
import {MatSelectModule} from '@angular/material/select';
4+
import {MatFormFieldModule} from '@angular/material/form-field';
5+
import {form, FormField} from '@angular/forms/signals';
6+
7+
interface Food {
8+
value: string;
9+
viewValue: string;
10+
}
11+
12+
interface Car {
13+
value: string;
14+
viewValue: string;
15+
}
16+
17+
/**
18+
* @title Select in a form (signal forms)
19+
*/
20+
@Component({
21+
selector: 'select-form-signal-form-example',
22+
templateUrl: 'select-form-signal-form-example.html',
23+
imports: [FormField, MatFormFieldModule, MatSelectModule, MatInputModule],
24+
})
25+
export class SelectFormSignalFormExample {
26+
protected selectedValue = form(signal(''));
27+
protected selectedCar = form(signal(''));
28+
29+
protected foods: Food[] = [
30+
{value: 'steak-0', viewValue: 'Steak'},
31+
{value: 'pizza-1', viewValue: 'Pizza'},
32+
{value: 'tacos-2', viewValue: 'Tacos'},
33+
];
34+
35+
protected cars: Car[] = [
36+
{value: 'volvo', viewValue: 'Volvo'},
37+
{value: 'saab', viewValue: 'Saab'},
38+
{value: 'mercedes', viewValue: 'Mercedes'},
39+
];
40+
}

‎src/components-examples/material/select/select-form/select-form-example.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface Car {
1515
}
1616

1717
/**
18-
* @title Select in a form
18+
* @title Select in a form (template-driven forms)
1919
*/
2020
@Component({
2121
selector: 'select-form-example',

0 commit comments

Comments
 (0)