Angularマテリアルプロジェクトに単純な選択オプションフォームフィールドがあります:
component.html
_ <mat-form-field>
<mat-select [(value)]="modeSelect" placeholder="Mode">
<mat-option value="domain">Domain</mat-option>
<mat-option value="exact">Exact</mat-option>
</mat-select>
</mat-form-field>
_
[(value)]="modeSelect"
は、component.tsファイルのmodeSelectプロパティにバインドされています。
ページの読み込み時にデフォルトで_<mat-option value="domain">Domain</mat-option>
_が選択されるようにしたいと思います。
_ng-selected
_が機能しませんでした
ngModel
またはFormsを使用する必要はありません
あなたのhtmlで:
<mat-form-field>
<mat-select [(value)]="selected" placeholder="Mode">
<mat-option value="domain">Domain</mat-option>
<mat-option value="exact">Exact</mat-option>
</mat-select>
</mat-form-field>
コンポーネントで、パブリックプロパティselected
をデフォルトに設定するだけです。
selected = 'domain';
これを試して
<mat-form-field>
<mat-select [(ngModel)]="modeselect" [placeholder]="modeselect">
<mat-option value="domain">Domain</mat-option>
<mat-option value="exact">Exact</mat-option>
</mat-select>
</mat-form-field>
成分:
export class SelectValueBindingExample {
public modeselect = 'Domain';
}
また、app.moduleにFormsModule
をインポートすることを忘れないでください
I was able to set the default value or whatever value using the following:
Template:
<mat-form-field>
<mat-label>Holiday Destination</mat-label>
<mat-select [(ngModel)]="selectedCity" formControlName="cityHoliday">
<mat-option [value]="nyc">New York</mat-option>
<mat-option [value]="london">London</mat-option>
<mat-option [value]="india">Delhi</mat-option>
<mat-option [value]="Oslo">Oslo</mat-option>
</mat-select>
</mat-form-field>
Component:
export class WhateverComponent implements OnInit{
selectedCity: string;
}
ngOnInit() {
this.selectedCity = 'london';
}
}
この問題はしばらくの間私を苛立たせました。私は反応フォームを使用していましたが、この方法を使用して修正しました。 PS。 Angular 9およびMaterial 9を使用します。
「ngOnInit」ライフサイクルフック
1)配列またはオブジェクトリテラルからデフォルトとして設定するオブジェクトを取得します
const countryDefault = this.countries.find(c => c.number === '826');
ここでは、国の配列からイギリスのオブジェクトを取得しています。
2)次に、formsbuilderオブジェクト(mat-select)にデフォルト値を設定します。
this.addressForm.get('country').setValue(countryDefault.name);
3)最後に...バインドされた値のプロパティを設定します。私の場合、名前の値が必要です。
<mat-select formControlName="country">
<mat-option *ngFor="let country of countries" [value]="country.name" >
{{country.name}}
</mat-option>
</mat-select>
魅力のように機能します。それが役に立てば幸い
ここでNarmの回答に追加したいと思います。彼女の回答の下にコメントと同じものを追加しました。
基本的に、[(value)]に割り当てられる値のデータ型は、mat-optionsに使用される[value]属性のデータ型と一致する必要があります。特に以下のように* ngForを使用してオプションを入力する場合
<mat-form-field fxHide.gt-sm='true'>
<mat-select [(value)]="heroes[0].id">
<mat-option *ngFor="let hero of heroes" [value]="hero.id">{{ hero.name }}</mat-option>
</mat-select>
</mat-form-field>
[(value)] = "heroes [0] .id"を[(value)] = "heroes [0] .name"に変更すると、データ型が一致しないため機能しないことに注意してください。
これらは私の調査結果です。必要に応じて自由に修正してください。
通常は、テンプレートでFormGroup、Reactive Formsなどを使用してこれを行います。
this.myForm = this.fb.group({
title: ['', Validators.required],
description: ['', Validators.required],
isPublished: ['false',Validators.required]
});
これを試して:
<mat-select [(ngModel)]="defaultValue">
export class AppComponent {
defaultValue = 'domain';
}