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"); }
}
3 Réponses :
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
});
Ce n'est pas le cas: c'est: p> get () code> 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. P> p>
@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.
Ceci obtenez est uniquement d'obtenir le champ, si vous souhaitez lire: Si vous souhaitez écrire un élément dans le formulaire, utilisez PatchValue P> this.form.patchValue({ inputName: value });
Il n'y a pas de propriété
get code> un tableau dans l'objetFormgroup code>. Peut-être que vous recherchiezthis.form.get ("INPUTNAME"). SETVALUE (valeur); code>