Fermer

mai 7, 2021

Impossible de se lier à formGroup Erreur de propriété inconnue dans Angular


Voyons pourquoi l'erreur «Impossible de se lier à 'formGroup' car il ne s'agit pas d'une propriété connue de 'form'» s'affiche et comment vous pouvez la corriger et faire fonctionner à nouveau votre application. [19659002] Presque toutes les applications Web frontales s'appuient sur des formulaires pour recevoir les commentaires des utilisateurs. Des fonctionnalités telles que les connexions utilisateur, la messagerie intégrée à l'application, le traitement des paiements et les paramètres personnalisés reposent sur les données de l'utilisateur qui sont généralement fournies via un formulaire HTML.

Angular, comme la plupart des frameworks frontaux, est fourni avec des bibliothèques utiles pour l'utilisation, la validation et traitement des données du formulaire. Le framework inclut en fait deux manières différentes de lier les données de formulaire à l'état de l'application – et c'est là que les choses peuvent devenir confuses.

Si vous n'importez pas le bon module de forme angulaire au bon endroit, votre le code échouera à se compiler et vous verrez Impossible de se lier à 'formGroup' car ce n'est pas une propriété connue de 'form' dans votre terminal.

Voyons pourquoi cela l'erreur apparaît et comment vous pouvez la réparer et faire fonctionner à nouveau votre application.

Le composant

Si vous créez un nouveau formulaire réactif dans Angular et que vous souhaitez regrouper plusieurs champs, vous peut créer le composant suivant:

app.component.html

 < form  [formGroup] =  " userProfileForm "   (soumettre)  = [19659011] " updateUserProfile () "  > 
     < div   class  =  " form-group "  > 
         < label   for  =  " first_name "  >  Prénom  < /  label > 
         < input   type  =  " text " 
              formControlName  =  " prénom " 
              id  =  " prénom " 
              requis > 
         < label   for  =  " last_name "  >  Last Name  ] </  label > 
         < input   type  =  " text " 
              formControlName  =  " last_name " 
              id  =  " nom de famille " 
              requis > 
     </  div > 
     < bouton   type  =  " submit " [19659012] class  =  " btn btn-default "  >  Submit  </  button > 
 </  formulaire > 
 

app.component.ts

 import   { Component }   from   '@ angular / core' ; 
 import   { FormControl  FormGroup }   de   '@ angular / forms' ; 

@  Composant  ( {
  sélecteur :   'app-root' 
  templateUrl :   './ app.component.html' 
  styleUrls :   [ './ app.component.css' ] 
} ) 
 export   class   AppComponent   {[19659102] public  userProfileForm  =   nouveau   FormGroup  ( {
    prénom :   nouveau   FormControl  ( '' ) 
    last_name :   new   FormControl  ( '' ) 
  } ) ; 

   public   updateUserProfile  () :   void   {
    
    console .  log  (
       this .  userProfileForm .  controls .  first_name .  value 
       this .  userProfileForm .  controls .  last_name .  value 
    )  ; 
  } 
} 

Ce formulaire est très simple – il prend juste le prénom et le nom d'un utilisateur et les affiche sur la console du navigateur – mais si vous essayez d'exécuter ng serve depuis votre terminal, vous verrez l'erreur Impossible de se lier à 'formGroup' car ce n'est pas une propriété connue de 'form' erreur:

 Impossible de se lier à 'formGroup' car ce n'est pas une propriété connue de l'erreur «form» dans Angular 9

Que signifie cette erreur?

Angular essaie de nous dire qu'il ne connaît pas la directive formGroup sur l'élément

de votre composant. Cela se produit généralement lorsque le mauvais module de formulaires est importé, le bon module est importé au mauvais endroit ou le ReactiveFormsModule n'est tout simplement pas importé du tout.

Cas 1: le mauvais module de formulaires a été importé [19659145] Si vous ouvrez le fichier principal app.module.ts de votre application, vous avez peut-être importé le FormsModule et vous vous attendiez à ce que le composant ci-dessus fonctionne. La raison pour laquelle l'importation de FormsModule ne fonctionne pas est que c'est le mauvais module de formulaires .

Le fait d'avoir deux modules de formulaires différents rend cette erreur assez courante.

Cas 2: Le bon module a été importé au mauvais endroit

Cette erreur se produit également lorsque vous importez le module dans le module racine de votre application, mais que vous ne parvenez pas à importer le ReactiveFormsModule dans votre module de fonctionnalités.

Si vous êtes en construisant un composant comme celui ci-dessus dans un module de fonction vérifiez que le ReactiveFormsModule y est également importé.

Cas 3: Oublié d'importer le module

Enfin, vous verrez cette erreur si vous avez simplement oublié d'importer le ReactiveFormsModule . Il est facile de rater des importations comme celle-ci, mais si vous utilisez VS Code, vous pouvez télécharger une extension qui le fera automatiquement pour vous .

Comment pouvez-vous y remédier?

Heureusement, le correctif est simple. Importez simplement le ReactiveFormsModule dans le module de fonctionnalités ou le fichier principal app.module.ts :

 import   { BrowserModule }   from [19659080] '@ angular / platform-browser' ; 
 import   { NgModule }   from   '@ angular / core' ; 
 import   { AppComponent }   from   './ app.component' ; 
 import   { ReactiveFormsModule }   extrait de   '@ angular / forms' ; 

@  NgModule  ( {
  déclarations :   [
    AppComponent
  ] 
  importations :   [
    BrowserModule 
    ReactiveFormsModule 
  ] 
  fournisseurs :   [] 
  bootstrap :   [ AppComponent ] 
} ) 
 export   class   AppModule   { } 

Vous pouvez importez même le ReactiveFormsModule et le FormsModule dans votre application si vous avez besoin de prendre en charge les formulaires modèles et les formulaires réactifs dans la même application ou fonctionnalité angulaire.

Une fois que vous avez mis à jour votre module pour inclure le ReactiveFormsModule votre application et le nouveau formulaire devraient fonctionner.




Source link