typescript - Angular Material-slider kan ikke vise verdier
Jeg vil vise hvordan man kan ha en skyveknapp med Angular Material-biblioteket. Målet her er at når jeg skyver for å velge antall brukere på et abonnement, endres prisen dynamisk når jeg skyver tilbake eller fremover.
Jeg kan sette verdiene i min TS-komponent, men det endres ikke dynamisk i HTML, selv om jeg brukte dobbel bindsbraketter {{}}. Jeg er litt forvirret over hvorfor det ikke fungerer.
subscriptioncomponent.html
<h1>Subscription</h1>
<h5>Choose how much user your account will have</h5>
<h5> {{amount}} Euro/month</h5>
<h5>{{user}} Users</h5>
<mat-slider
thumbLabel
[displayWith]="formatLabel"
tickInterval="auto"
min="1"
max="10"
[(ngModel)]="value"></mat-slider>
subscriptioncomponent.ts
export class SubscriptionchooseComponent implements OnInit {
amount : number = 0;
user : number = 0;
value: number = 1;
formatLabel(value: number | null) {
if (!value) {
return 0;
}
this.value = value;
console.log(this.value);
return value;
}
constructor() {
this.user = this.value;
this.amount = this.user * 9;
console.log(this.amount);
console.log(this.value);
}
ngOnInit() {
}
}
Svar #1
Hva med dette:
<h1>Subscription</h1>
<h5>Choose how much user your account will have</h5>
<h5> {{value * 9}} Euro/month</h5>
<h5>{{value}} Users</h5>
<mat-slider thumbLabel tickInterval="auto" min="1" max="10" [(ngModel)]="value"></mat-slider>
Hvis du trenger tilgang til verdien i komponenten din, kan du binde til input():
<h1>Subscription</h1>
<h5>Choose how much user your account will have</h5>
<h5> {{amount}} Euro/month</h5>
<h5>{{user}} Users</h5>
<mat-slider thumbLabel tickInterval="auto" min="1" max="10" (input)="changeValue($event)"></mat-slider>
og i komponenten din:
changeValue(event) {
this.user = event.value;
this.amount = event.value * 9;
}
Svar #2
Du kan gjøre
<mat-slider
thumbLabel
[displayWith]="formatLabel"
tickInterval="auto"
min="1"
max="10"
[(ngModel)]="value" [ngModelOptions]="{standalone: true}"></mat-slider>
stackblitz-lenke
