Comment calculer la valeur de plusieurs entrées en utilisant des formes réactives angulaires?

utilisateur2374165

J'essaie de calculer le pourcentage de remise ou le montant de la remise à partir du prix catalogue en utilisant des formes réactives angulaires 6.

form.component.html (simplifié)

...
  <form [formGroup]="productForm">
    <mat-form-field class="quat-width">
      <span matPrefix>$ &nbsp;</span>
      <input matInput type="number" name="CostPrice" formControlName="CostPrice">
    </mat-form-field>
    <mat-form-field class="quat-width">
      <span matPrefix>$ &nbsp;</span>
      <input matInput type="number" name="ListPrice" formControlName="ListPrice">
    </mat-form-field>
    <mat-form-field class="quat-width">
      <span matPrefix>$ &nbsp;</span>
      <input matInput type="number" name="DiscountAmount" formControlName="DiscountAmount">
    </mat-form-field>
    <mat-form-field class="quat-width">
      <span matPrefix>% &nbsp;</span>
      <input matInput type="number" name="DiscountPercent" formControlName="DiscountPercent">
    </mat-form-field>
  </form>

form.component.ts (simplifié)

...
  export class ProductFormComponent implements OnInit {

    productForm: FormGroup;

    constructor(
      private fb: FormBuilder,
      private productService: ProductsService) { }

    ngOnInit() {
      this.createForm();
    }

    createForm() {
      this.productForm = this.fb.group({
        DiscountAmount: [0],
        DiscountPercent: [0],
        DiscountPrice: [0],
        ListPrice: [0],
      });
      this.productForm.valueChanges.debounce(250).subscribe(val =>{
        if (val.ListPrice > 0 && val.DiscountAmount > 0) {
          const newVal = Math.round((val.ListPrice / val.DiscountAmount) * 100);
          this.productForm.controls.DiscountPercent.patchValue(newVal);
        }
        if (val.ListPrice > 0 && val.DiscountAmount > 0) {
          const newVal = Math.round((discPercent / 100) * val.ListPrice);
          this.productForm.controls.DiscountAmount.patchValue(newVal);
        }
      }  
      this.validateForm();
    }

    validateForm() {
      Object.keys(this.productForm.controls).forEach(key => {
        this.productForm.controls[key].markAsTouched();
        this.productForm.controls[key].updateValueAndValidity();
      });
    }
  }

le code ci-dessus est ce que j'ai obtenu jusqu'à présent et ne fonctionne pas, crée une erreur maximale de pile d'appels atteinte.

Comment puis-je définir la valeur du montant de la remise si le prix catalogue et le pourcentage de remise sont modifiés et définir la valeur du pourcentage de remise lorsque le prix catalogue et le montant de la remise sont modifiés?

Indrakumara

vous pouvez utiliser l'option {emitEvent: false} pour patchValue et updateValueAndValidity

 this.productForm.valueChanges.subscribe(val =>{
        if (val.ListPrice > 0 && val.DiscountAmount > 0) {
          const newVal = Math.round((val.ListPrice / val.DiscountAmount) * 100);
          this.productForm.controls.DiscountPercent.patchValue(newVal, {emitEvent: false});
        }
        if (val.ListPrice > 0 && val.DiscountAmount > 0) {
          const newVal = Math.round((val.DiscountPercent / 100) * val.ListPrice);
          this.productForm.controls.DiscountAmount.patchValue(newVal, {emitEvent: false});
        }
       this.validateForm();   
      });


    }

    validateForm() {
      Object.keys(this.productForm.controls).forEach(key => {
        this.productForm.controls[key].markAsTouched();
        this.productForm.controls[key].updateValueAndValidity({emitEvent: false});
      });
    }

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Comment réaffecter les clés de tableau imbriquées en fonction des formes réactives angulaires ?

Comment définir la date dans des formes réactives angulaires à l'aide de patchValue

capture des entrées de formulaire avec des formes réactives angulaires 8

Les formes angulaires 9 réactives affichent la division de masquage en fonction de la sélection des boutons radio

Plusieurs instances de FormArray avec des formes réactives angulaires 5

La valeur de la case à cocher ne change pas dans les formes réactives angulaires

Valeur de consigne de date de formes réactives angulaires

Formes réactives angulaires: comment obtenir simplement des valeurs modifiées

Validation de la case à cocher des formes réactives angulaires 2 dans Ionic

Liaison de données bidirectionnelle de formes réactives angulaires

formes réactives angulaires à valeur unique

formes réactives angulaires valeur indéfinie

Comment obtenir la valeur des entrées en utilisant javascript

Comment lier la valeur par défaut dans les formes réactives angulaires mat-radio-group

Formes réactives angulaires: la valeur de la liste déroulante Sélection dynamique ne lie pas

Comment afficher le résumé du message d'erreur en haut du formulaire sous des formes réactives angulaires

Gestion des types d'entrée de nombre tels que tel ou temps dans des formes réactives angulaires 6?

comment se souvenir de la valeur des entrées en utilisant le stockage local?

Convertir du texte en majuscules tout en tapant un champ de texte avec des formes réactives angulaires

Formes imbriquées réactives angulaires

Formes réactives angulaires générant dynamiquement un attribut de validation en entrée à l'aide de l'interpolation

calculer la valeur des cases cochées en utilisant JS

Tableau de formes réactives angulaires

Formes réactives angulaires

Changer la valeur des formes réactives dans Angular

Formes de tableau dynamique imbriquées dans les formes réactives angulaires

Formes réactives angulaires Sélectionnez ne pas afficher la valeur initiale

Formes réactives angulaires - Lire / définir la valeur du tableau

Comment calculer la distance entre plusieurs vecteurs de latitude lon en utilisant R

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive