J'essaie de créer un formulaire en angulaire 7 et d'y entrer mais le formulaire donne l'erreur suivante: ERROR TypeError: "_co.service.formData is undefined"
voici maintenant mon code pour le partie html du composant: -
export class UserData{
public Email:string;
public Password:string;
public Rera_no:string;
public Name:string;
public Company_name:string;
}
alors que c'est le code de script de type
import { Injectable } from '@angular/core';
import {UserData} from './user.model';
import {HttpClient} from '@angular/common/http';
import {environment} from '../../environments/environment';
const API_URL=environment.apiUrl;
@Injectable({
providedIn: 'root'
})
export class UserService {
formData : UserData;
constructor(private http:HttpClient) {}
createUser(formData:UserData)
{
return this.http.post(API_URL+'/user/signup',formData);
}
}
et c'est le code pour user.service: -
import { Component, OnInit } from '@angular/core';
import {UserService} from '../../shared/user.service';
import {NgForm} from '@angular/forms';
@Component({
selector: 'app-agent-signup',
templateUrl: './agent-signup.component.html',
styleUrls: ['./agent-signup.component.css']
})
export class AgentSignupComponent implements OnInit {
constructor(private service:UserService) { }
ngOnInit() {
}
signUp(form:NgForm)
{
}
}
et voici la classe user.model: -
<form (sumbit)="signUp(form)" autocomplete="off" #form="ngForm">
<div class="form-group">
<input name="Name" class="form-control" #Name="ngModel" [(ngModel)]="service.formData.Name" required>
</div>
</form>
et je suis obtenir l'erreur suivante: - ERREUR TypeError: "_co.service.formData n'est pas défini" quelqu'un peut-il me dire où je me trompe et comment puis-je le corriger?
3 Réponses :
Je pense que c'est parce que vous devez appeler la méthode du service UserService dans le composant avec la forme AgentSignupComponent . Vous devez donc appeler la méthode createUser dans AgentSignupComponent;
import { Component, OnInit } from '@angular/core';
import {UserService} from '../../shared/user.service';
import {NgForm} from '@angular/forms';
@Component({
selector: 'app-agent-signup',
templateUrl: './agent-signup.component.html',
styleUrls: ['./agent-signup.component.css']
})
export class AgentSignupComponent implements OnInit {
constructor(private service:UserService) { } //You use DI this but dont call method;
ngOnInit() {
}
signUp(form:NgForm) {
this.service.createUser(form);
}
}
vous initialisez avec l'objet Class, mais vous ne créez pas son objet. Donc faites des changements comme celui-ci dans votre composant
de
formData: UserData;
à
formData = new UserData ();
dans votre modèle
export class UserData{
public Email:string;
public Password:string;
public Rera_no:string;
public Name: string = '';
public Company_name:string;
}
J'espère que cela résoudra votre problème
MODIFIER p >
vous utilisez la variable Object comme ngModel qui n'est pas encore créée dans le service. essayez donc de l'initialiser d'abord avec une chaîne vide.
<form (sumbit)="signUp(form)" autocomplete="off" #form="ngForm">
<div class="form-group">
<input name="Name" class="form-control" #Name="ngModel" [(ngModel)]="service.formData?.Name" required>
</div>
</form>
Écrivez un console.log (service); dans votre fonction InOnInit () de votre classe AgentSignupComponent . Observez les propriétés que vous pouvez voir dans votre console. Cette erreur signifie qu'il ne peut pas accéder à l'objet UserData dans votre variable formData. Vous devez donc lancer un objet UserData et attribuer une valeur à la variable. Remplacez formData: UserData; par formData = new UserData ();
où avez-vous défini
service.formData.Name?@programoholic s'il vous plaît voir le code mis à jour
Pouvez-vous fournir un stackblitz?
@JohanRin stackblitz.com/edit/angular-kwhgmb