0
votes

Impossible d'obtenir la valeur de l'entrée de la forme à l'intérieur de l'angulaire 8

J'ai une forme simple dans la page HTML. Maintenant, il s'agit d'un formulaire "add-edit", alors quand j'ouvre la page avec un ID, je devrais compiler toutes les entrées avec les valeurs objecid, lorsque j'ouvre la page sans id ID, je devrais pouvoir compiler toutes les entrées manuellement et Ajoutez ensuite l'objet à la base de données. Le problème est que je ne peux pas lire / écrire la valeur du champ INPUTS à l'aide de:

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
import { Router, ActivatedRoute } from '@angular/router';
import { FuelService } from '../services/fuel.service';
import { VehiclesService } from '../services/vehicles.service';
import { Fuel } from '../models/fuel';
import { Vehicle } from '../models/vehicle';
import { of } from 'rxjs';

@Component({
  selector: 'app-fuel-add-edit',
  templateUrl: './fuel-add-edit.component.html',
  styleUrls: ['./fuel-add-edit.component.css']
})
export class FuelAddEditComponent implements OnInit {

  form: FormGroup;
  plateCtrl: FormControl;
  actionType: string;
  fuelId: number;
  errorMessage: any;
  existingFuel: Fuel;
  vehicles: Vehicle[];
  dataSelected: Date;

  constructor(private fuelService: FuelService, private vehicleService: VehiclesService, private formBuilder: FormBuilder, private avRoute: ActivatedRoute, private router: Router) {
    const idParam = 'id';
    this.actionType = 'Add';
    if (this.avRoute.snapshot.params[idParam]) {
      this.fuelId = this.avRoute.snapshot.params[idParam];
    }

    this.form = this.formBuilder.group(
      {
        picker: [''],
        cost: ['', [Validators.required]],
        vehicleList: [''],
        startKm: ['', [Validators.required]],
        endKm: ['', [Validators.required]],
        liter: ['', [Validators.required]],
        average: ['', [Validators.required]]
      }
    )

    of(this.vehicleService.getVehicles().subscribe(data=> (
      this.vehicles = data
    )))

  }

  ngOnInit() {
    if (this.fuelId > 0) {
      console.log(this.form);
      this.actionType = "Edit";
      this.fuelService.getFuel(this.fuelId)
        .subscribe(data => (
          this.existingFuel = data,
          this.form.get["picker"].setValue(data.date),
          this.form.get["cost"].setValue(data.cost),
          this.form.get["vehicleList"].setValue(data.vehicle.id),
          this.form.get["startKm"].setValue(data.startKm),
          this.form.get["endKm"].setValue(data.endKm),
          this.form.get["liter"].setValue(data.liter),
          this.form.get["average"].setValue(data.average)
        ));
    }
  }

  get picker() { return this.form.get("picker"); }
  get cost() { return this.form.get("cost"); }
  get vehicleList() { return this.form.get("vehicleList"); }
  get startKm() { return this.form.get("startKm"); }
  get endKm() { return this.form.get("endKm"); }
  get liter() { return this.form.get("liter"); }
  get average() { return this.form.get("average"); }
}


1 commentaires

Il n'y a pas de propriété get un tableau dans l'objet Formgroup . Peut-être que vous recherchiez this.form.get ("INPUTNAME"). SETVALUE (valeur);


3 Réponses :


0
votes

Vous pouvez utiliser PatchValue pour modifier une valeur spécifique comme ci-dessous ou le remplacer par SETValue si vous ne pouvez pas modifier toutes les valeurs dans le formulaire.

this.form.patchValue({
    inputName: value
});


0 commentaires

1
votes

Ce n'est pas le cas: xxx

c'est: xxx

get () méthode vous donne accès à contrôle dans le groupe de formulaire. Ce n'est pas un objet d'accéder à la propriété via des crochets.


2 commentaires

@Nicolas je l'ai changé à l'objet uniquement. Merci


Ouais, j'ai résolu. C'était tellement muet sur ma fin, merci pour l'aide.



0
votes

Ceci obtenez est uniquement d'obtenir le champ, si vous souhaitez lire: xxx pré>

Si vous souhaitez écrire un élément dans le formulaire, utilisez PatchValue P>

      this.form.patchValue({ inputName: value });


0 commentaires