Di Angular Material Design 6, metode (ubah) telah dihapus. Saya tidak dapat menemukan cara mengganti metode perubahan untuk mengeksekusi kode dalam komponen ketika pengguna mengubah pilihan Terima kasih!
Di Angular Material Design 6, metode (ubah) telah dihapus. Saya tidak dapat menemukan cara mengganti metode perubahan untuk mengeksekusi kode dalam komponen ketika pengguna mengubah pilihan Terima kasih!
Jawaban:
Mengubahnya dari change
menjadi selectionChange
.
<mat-select (change)="doSomething($event)">
sekarang
<mat-select (selectionChange)="doSomething($event)">
(changeEventChange)
acara untuk mendeteksi kapan perubahan acara berubah.
selectionChange
material.angular.io/components/select/api
Jika Anda menggunakan formulir Reaktif Anda dapat mendengarkan perubahan pada kontrol pilih seperti itu ..
this.form.get('mySelectControl').valueChanges.subscribe(value => { ... do stuff ... })
.updateValueAndValidity
kontrol jangan lupa { emitEvent: false }
untuk menghindari RangeError: Maximum call stack size exceeded
. Di sisi lain, terima kasih atas petunjuk (+1), ini menuntun saya ke apa yang saya butuhkan.
Untuk:
1) mat-pilih (selectionChange)="myFunction()"
bekerja dalam sudut seperti:
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) Pilihan html sederhana (change)="myFunction()"
berfungsi dalam sudut seperti:
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
}
Bagi saya (selectionChange)
dan yang disarankan (onSelectionChange)
tidak berhasil dan saya tidak menggunakan ReactiveForms
. Apa yang akhirnya saya lakukan adalah menggunakan (valueChange)
acara seperti:
<mat-select (valueChange)="someFunction()">
Dan ini berhasil untuk saya
<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>
Saya mengalami masalah ini hari ini dengan mat-option-group. Hal yang memecahkan masalah saya adalah menggunakan acara lain yang disediakan mat-pilih: valueChange
Saya taruh di sini sedikit kode untuk memahami:
<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 Mat:
"@ angular / material": "^ 6.4.7",