2017-02-02 29 views
3

Material2では、selectを初期化するときにデフォルト値は選択されません。ユーザーが値を選択した場合、ユーザーは値を選択解除できません。ユーザーが値を選択解除できるようにしたい。md-select Angular2で選択したオプションの選択を解除する方法

Plunkr

私はhelp already availableを経て、それを使用することができませんでした。

<mat-select id="formal" formControlName="formal" placeholder="Default - No value selected"> 
    <mat-option value="1">formal</mat-option> 
    <mat-option value="2">informal</mat-option> 
</mat-select> 

答えて

2

ngModelを使用し、その値をundefinedに設定して、必要な結果を得ました。答えのためのコンポーネント

unselect(): void { 
    this.selectedValue = undefined; 
} 

plunkr

<md-select id="formal" [(ngModel)]="selectedValue" formControlName="formal" placeholder="Default - No value selected"> 
    <md-option value="1">formal</md-option> 
    <md-option value="2">informal</md-option> 
</md-select> 

<div (click)="unselect()">click me to clear md select</div> 

+0

plunkr link is boken – eagor

1

私はそれを言及する価値だと思う別のソリューションがあります:あなたはComponent内の任意のカスタムコードを必要としないどちらもngModelを使用していないそのclick

<md-select id="formal" formControlName="formal" placeholder="Default - No value selected"> 
     <md-option (click)="form.controls.formal.reset()"></md-option> 
     <md-option value="1">formal</md-option> 
     <md-option value="2">informal</md-option> 
    </md-select> 

<md-select>を空<md-option>を追加し、resetこの方法を

あなたが角度のフォームを使用している場合、あなたは常にpatchValue 0123にすることができますPlunker

+0

この場合でも何かが選択され、空の値が選択されます。私はそれが完全にデフォルト状態に設定されているのを探していました。 –

+0

通常のhtml 'select'では、このオプションもありません...空の' option'や ' - select something - '' option'を作成して "デフォルト状態"にする必要があります。この方法は、ユーザーがボタンをクリックするのではなく何も選択しないオプションを持っているため、UIの方が優れていますが、ユーザーのケースはわかりません。 ;-) –

+0

plunkr link is boken – eagor

1

を見ますのようにしてください。

まず、select要素。この例ではIonicを使用していますが、Angularと同じです。 formFormGroupある

<ion-select formControlName="formal" item-start> 
    <ion-option *ngFor="let option of input.options" value="{{option}}">{{option}}</ion-option> 
</ion-select> 

<ion-icon color="danger" name="close" (click)="unselect('formal')" item-end></ion-icon> 

form: FormGroup; 

そしてunselectメソッドはnull値をパッチ。

unselect(id: string): void { 
    let reset = {}; 
    reset[id] = '' 
    this.form.patchValue(reset); 
    } 

よろしくお願いいたします。

関連する問題