角度7:使用下拉框上的x按钮清除选择

LeO*_*LeO 5 angular-material angular angular7

我以为可以将Angular的下拉列表示例和Input with clear框组合为:

<mat-form-field >
  <mat-select placeholder="Country" [(value)]="selectedCountry" (selectionChange)="emitItemChanges()">
    <div *ngFor="let item of lstItems|async">
      <mat-option *ngIf="addItem(item)" [value]="item">{{item.title}}</mat-option>
    </div>
  </mat-select>
  <button mat-button *ngIf="selectedCountry" matSuffix mat-icon-button aria-label="Clear" 
    (click)="selectedCountry=undefined">
    <mat-icon>close</mat-icon>
  </button>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

哪个工作接近预期的方式

在此处输入图片说明

清除输入。我现在面临的问题是它会立即打开选择框。无论如何如何防止这种行为?

我知道还有其他解决方案可以清除选择。我想知道这种方法是否可行?

LeO*_*LeO 17

(click)="selectedCountry=undefined; $event.stopPropagation()"有帮助!感谢@Sachila :-)

所以完整的代码如下:

  <button mat-button *ngIf="selectedCountry" matSuffix mat-icon-button 
    aria-label="Clear" (click)="selectedCountry=undefined; $event.stopPropagation()">
  <mat-icon>close</mat-icon>
Run Code Online (Sandbox Code Playgroud)


Ani*_*nia 6

反应形式的示例

$event.stopPropagation()- 不再打开选择

       <mat-form-field>
         <mat-select formControlName="team" placeholder="Team">
           <mat-option *ngFor="let team of availableTeams" [value]="team.id">{{team.name}}</mat-option>
         </mat-select>
         <button *ngIf="form.controls.team.value"
                 matSuffix
                 mat-icon-button
                 type="button"
                 aria-label="Clear"
                 (click)="form.controls.team.setValue(null); $event.stopPropagation()">
           <mat-icon>close</mat-icon>
         </button>
        </mat-form-field>
Run Code Online (Sandbox Code Playgroud)