typescript - Angular 8: Hvordan utføre beregning på to egenskaper i et observabelt objekt og lagre resultatet i en annen egenskap


Jeg trenger å vise summen av to egenskaper til observerbare data. Her er koden min. Vennligst gi meg råd om hvordan jeg kan fikse det.

Typescript-klasse

export class Amount {
Amount1: number;
Amount2: number;
Total:number;
}

I TypeScript-tjenesten:

Jeg har erklært det observerbare objektet

export class AmountService {    
 public newmessageService = new BehaviorSubject(new Amount());    
  public Model = this.newmessageService.asObservable();     
}

I komponentklasse:

abonnerte på den observerbare modellen i kalkulasjonskomponenten

export class Calculation implements OnInit {    
Model$:Amount;     
  ngOnInit() {    
    this.service.Model.subscribe(temp => this.Model$ = temp)
  }
}

I komponentvisning :

I visningen er Amount1- og Amount2-egenskapene deklarert for inndata, og totalen vises.

  <form name="calculationform">

  <mat-form-field class="example-full-width">    
    <mat-label>Amount1</mat-label>    
    <input matInput [(ngModel)]="Model$.Amount1" name="Amount1">    
  </mat-form-field>

  <mat-form-field class="example-full-width">    
    <mat-label>Amount2</mat-label>    
    <input matInput [(ngModel)]="Model$.Amount2" name="Amount2">    
  </mat-form-field>

      <mat-label>Total:</mat-label>        
      <mat-label>{{Model$.Total}}</mat-label>
</form>

Jeg trenger å vise summen av Amount1 og Amount2 på Total-egenskapen hver gang vi endrer beløpet.

Takk.

Svar #1

Du kan vurdere å konvertere Total-egenskapen til en getter.

export class Amount {
  Amount1: number;
  Amount2: number;
  get Total():number {
    return this.Amount1 + this.Amount2;
  };
}

Svar #2

Vennligst prøv

ngDoCheck( ){
   this.service.Model.subscribe(temp => {
      this.Model$ = temp;
      this.Model$.Total = Number(this.Model$.Amount1) + Number(this.Model$.Amount2);
   });
}

Relaterte artikler