html - hvordan kalle en metode når mat-option er valgt (angular)?
Jeg er ny i Angular og jeg vil kalle en spesifikk metode, bare når alternativ3 er valgt. Jeg sliter med å løse dette og kan ikke finne mye informasjon om dette på internett.
Når jeg velger alternativ3, er utdataene tomme.
Her er koden min så langt:
app.component.html:
<mat-form-field>
<mat-label>Select an option</mat-label>
<mat-select [(value)]="selected" >
<mat-option>None</mat-option>
<mat-option value="option1">Option 1</mat-option>
<mat-option value="option2">Option 2</mat-option>
<mat-option selectionChange="greet($event)">Option 3</mat-option>
</mat-select>
</mat-form-field>
<p>You selected: {{selected}}</p>
app.component.ts:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'materialdesign';
selected = 'option33';
greet() {
this.selected = 'it works';
}
}
Svar #1
prøv dette
<mat-form-field>
<mat-label>Select an option</mat-label>
<mat-select [(value)]="selected" (selectionChange)="inputChange()">
<mat-option>None</mat-option>
<mat-option value="option1">Option 1</mat-option>
<mat-option value="option2">Option 2</mat-option>
<mat-option value="option3">Option 3</mat-option>
</mat-select>
</mat-form-field>
<p>You selected: {{selected}}</p>
i component.ts
title = 'materialdesign';
selected = 'option33';
inputChange(){
if(this.selected == 'option3'){
this.greet();
}
}
greet() {
this.selected = 'it works';
}
stackblitz-eksempel
Svar #2
Hvis du vil lytte til en hendelse fra en Angular-komponent, må du legge til parenteser rundt hendelsen:
<mat-option (selectionChange)="greet($event)">Option 3</mat-option>
Da bør metoden din begynne å kjøre.
