IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

ERROR TypeError: Cannot read property 'addUser' of undefined


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut ERROR TypeError: Cannot read property 'addUser' of undefined
    Bonjour à tous,

    j'ai l'erreur suivante "ERROR TypeError: Cannot read property 'addUser' of undefined" lorsque je veux accéder à la fonction addUser depuis le fichier "auth.component.ts"

    Pour information mon fichier :

    User.model.ts:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    export class User{
        constructor(public login: string,
                    public Mdp : string){
        }
    }

    user.Service.ts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import 'rxjs/RX';
    import { User } from '../models/User.model';
    import { Subject } from 'rxjs';
     
     
    export class UserService {
      private users!: User[];
      userSubject = new Subject<User[]>();
     
      constructor(private userService: UserService) {
      }
     
      emitUsers() {
        this.userSubject.next(this.users.slice());
      }
     
      addUser(user: User) {
          this.users.push(user);
          this.emitUsers();
      }
    }

    auth.component.ts:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import { ThisReceiver } from '@angular/compiler';
    import 'rxjs/RX';
    import { Component, OnDestroy, OnInit } from '@angular/core';
    import { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';
    import { Router } from '@angular/router';
     
    import { User } from '../models/User.model';
    import { Subscription } from 'rxjs/Subscription';
    import { UserService } from '../services/user.Service';
     
     
    @Component({
      selector: 'app-auth',
      templateUrl: './auth.component.html',
      styleUrls: ['./auth.component.scss']
    })
    export class AuthComponent implements OnInit, OnDestroy {
     
      users: User[] = [];
     
      userSubscription: Subscription = new Subscription;
      userService!: UserService;
      userForm!: FormGroup;
     
      constructor( private formBuilder: FormBuilder,
                  private router : Router) {}
     
      ngOnInit() {
        this.initForm();
      }
     
      initForm(){
        this.userForm = this.formBuilder.group({
          login:['',Validators.required],
          Mdp:['',Validators.required],
        });
      }
     
      onSubmitForm(){
        const formValue= this.userForm.value;
        const newUser = new User (
          formValue['login'],
          formValue['Mdp']
        );
     
          console.log(newUser);
     
        this.userService.addUser(newUser);
      }
     
      ngOnDestroy() {
        this.userSubscription.unsubscribe();
      }
     
    }
    auth.component.html
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <div class="col-sm-b col-sm-offset-2">
        <form [formGroup]="userForm" (ngSubmit)="onSubmitForm()">
            <div class="form-group">
                <label for="login">login</label>
                <input type="text" class="form-control" id="login" formControlName="login">
            </div>
     
            <div class="form-group">
                <label for="Mdp">Mdp</label>
                <input type="text" class="form-control" id="Mdp" formControlName="Mdp">
            </div>
     
          <button type="submit" class="btn btn-primary" [disabled]="userForm.invalid">Soumettre</button>
        </form>
     
        </div>
     
        <ul class="list-group">
            <li class="list-group-item" *ngFor="let user of users">
              <h3>{{ user.login }} {{ user.Mdp }}</h3>
            </li>
        </ul>


    Merci pour votre aide.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    import { ThisReceiver } from '@angular/compiler';
    import 'rxjs/RX';
    import { Component, OnDestroy, OnInit } from '@angular/core';
    import { FormBuilder, FormGroup, Validators, FormArray } from '@angular/forms';
    import { Router } from '@angular/router';
     
    import { User } from '../models/User.model';
    import { Subscription } from 'rxjs/Subscription';
    import { UserService } from '../services/user.Service';
     
     
    @Component({
      selector: 'app-auth',
      templateUrl: './auth.component.html',
      styleUrls: ['./auth.component.scss']
    })
    export class AuthComponent implements OnInit, OnDestroy {
     
      users: User[] = [];
     
      userSubscription: Subscription = new Subscription;
      userService!: UserService;                  // supprimer cette ligne
      userForm!: FormGroup;
     
      constructor( 
                  private formBuilder: FormBuilder,
                  private router : Router,
                  private userService: UserService                     // ajouter cette ligne
    ) {}
     
      ngOnInit() {
        this.initForm();
      }
     
      initForm(){
        this.userForm = this.formBuilder.group({
          login:['',Validators.required],
          Mdp:['',Validators.required],
        });
      }
     
      onSubmitForm(){
        const formValue= this.userForm.value;
        const newUser = new User (
          formValue['login'],
          formValue['Mdp']
        );
     
          console.log(newUser);
     
        this.userService.addUser(newUser);
      }
     
      ngOnDestroy() {
        this.userSubscription.unsubscribe();
      }
     
    }

    de plus, comme tu n'a pas précisé de décorateur service en root dans le service : UserService
    j'imagine que tu as déclaré : UserService dans le module du composant comme ceci : providers: [UserService ]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut évolution vers "Circular dependency"
    Merci pour ton aide.

    Effectivement, je n'avais pas déclaré le service dans app.module.ts

    Par contre, je ne comprends pas pourquoi j'ai ce message d'erreur:

    ERROR Error: Uncaught (in promise): Error: NG0200: Circular dependency in DI detected for UserService.
    auth.component utilise les classes User et userService
    userService.Component utilise la classe User

    je ne vois pas pourquoi j'ai ce problème de "Circular dependency"

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Pourquoi tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      constructor(private userService: UserService) {
      }
    dans ton UserService tu inject le service dans lui même

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut résolu
    effectivement, ça ne peut pas fonctionner.

    Merci,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/11/2017, 23h21
  2. Réponses: 3
    Dernier message: 05/05/2017, 10h36
  3. Réponses: 3
    Dernier message: 01/06/2016, 20h45
  4. Erreur : TypeError: Cannot read property 'test' of undefined
    Par deathness dans le forum AngularJS
    Réponses: 1
    Dernier message: 11/05/2016, 10h42
  5. Réponses: 3
    Dernier message: 30/05/2015, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo