En Angular Material Design 6, se eliminó el método (cambiar). No puedo encontrar cómo reemplazar el método de cambio para ejecutar el código en el componente cuando el usuario cambia la selección ¡Gracias!
En Angular Material Design 6, se eliminó el método (cambiar). No puedo encontrar cómo reemplazar el método de cambio para ejecutar el código en el componente cuando el usuario cambia la selección ¡Gracias!
Respuestas:
La cambió de change
a selectionChange
.
<mat-select (change)="doSomething($event)">
es ahora
<mat-select (selectionChange)="doSomething($event)">
(changeEventChange)
evento para detectar cuándo cambia el evento de cambio.
selectionChange
material.angular.io/components/select/api
Si está utilizando formularios reactivos, puede escuchar los cambios en el control de selección así.
this.form.get('mySelectControl').valueChanges.subscribe(value => { ... do stuff ... })
.updateValueAndValidity
el control, no olvide pasar { emitEvent: false }
para evitar RangeError: Maximum call stack size exceeded
. Por otro lado, gracias por la pista (+1), me llevó a lo que necesitaba.
Por:
1) mat-select (selectionChange)="myFunction()"
funciona en angular como:
sample.component.html
<mat-select placeholder="Select your option" [(ngModel)]="option" name="action"
(selectionChange)="onChange()">
<mat-option *ngFor="let option of actions" [value]="option">
{{option}}
</mat-option>
</mat-select>
sample.component.ts
actions=['A','B','C'];
onChange() {
//Do something
}
2) La selección html simple (change)="myFunction()"
funciona en angular como:
sample.component.html
<select (change)="onChange()" [(ngModel)]="regObj.status">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
sample.component.ts
onChange() {
//Do something
}
Para mí (selectionChange)
y lo sugerido (onSelectionChange)
no funcionó y no lo estoy usando ReactiveForms
. Lo que terminé haciendo fue usar el (valueChange)
evento como:
<mat-select (valueChange)="someFunction()">
Y esto funcionó para mi
<mat-select placeholder="Select an option" [(ngModel)]="project.managerId" name="managerId" required (selectionChange)="fillComanager(project.managerId)"> <mat-option *ngFor="let manager of managers" [value]="manager.id"> {{ manager.name }} </mat-option> </mat-select>
Hoy tengo este problema con mat-option-group. Lo que me resolvió el problema es usar en otro evento proporcionado de mat-select: valueChange
Pongo aquí un pequeño código para entenderlo:
<mat-form-field >
<mat-label>Filter By</mat-label>
<mat-select panelClass="" #choosedValue (valueChange)="doSomething1(choosedValue.value)"> <!-- (valueChange)="doSomething1(choosedValue.value)" instead of (change) or other event-->
<mat-option >-- None --</mat-option>
<mat-optgroup *ngFor="let group of filterData" [label]="group.viewValue"
style = "background-color: #0c5460">
<mat-option *ngFor="let option of group.options" [value]="option.value">
{{option.viewValue}}
</mat-option>
</mat-optgroup>
</mat-select>
</mat-form-field>
Versión del tapete:
"@ angular / material": "^ 6.4.7",