Angulaire 2: ne Peut pas se lier à 'ngModel', car il n'est pas connu de la propriété de 'entrée'
Je suis en train de mettre en œuvre des Formes Dynamiques Angulaire 2. J'ai ajouté des fonctionnalités supplémentaires telles que la Suppression et de l'annulation de la dynamique des formes.
J'ai suivi cette documentation: https://angular.io/docs/ts/latest/cookbook/dynamic-form.html
J'ai fait quelques modifications au code. J'obtiens une erreur ici.
Comment puis-je faire cette erreur de go?
Vous pouvez trouver le code complet ici: http://plnkr.co/edit/SL949g1hQQrnRUr1XXqt?p=preview , qui travaille dans plunker mais pas dans mon système local.
Code Html:
<div>
<form [formGroup]="form">
<div *ngFor="let question of questions" class="form-row">
<label [attr.for]="question.key">{{question.label}}</label>
<div [ngSwitch]="question.controlType">
<input *ngSwitchCase="'textbox'" [formControlName]="question.key"
[id]="question.key" [type]="question.type" [(ngModel)]="question.value">
<select [id]="question.key" [(ngModel)]="question.value" *ngSwitchCase="'dropdown'" [formControlName]="question.key" >
<option *ngFor="let opt of question.options" [ngValue]="opt.key" >{{opt.value}}</option>
</select>
<input *ngSwitchCase="'checkbox'" [(ngModel)]="question.value"
[id]="question.key" [type]="question.type" (change)="question.value = ck.checked" #ck [ngModelOptions]="{standalone: true}">
</div>
<div class="errorMessage" *ngIf="!form.controls[question.key].valid">{{question.label}} is required</div>
</div>
<div class="form-row">
<button type="submit" [disabled]="!form.valid" (click)="onSubmit()">Save</button>
<button type="button" class="btn btn-default" (click)="cancel()">Cancel</button>
<button type="button" class="btn btn-default" (click)="clear()">Clear</button>
</div>
</form>
<div *ngIf="payLoad" class="form-row">
<strong>Saved the following values</strong><br>{{payLoad}}
</div>
</div>
Code de composant:
import { Component, Input, OnInit } from '@angular/core';
import { FormGroup, REACTIVE_FORM_DIRECTIVES } from '@angular/forms';
import { QuestionBase } from './question-base';
import { QuestionControlService } from './question-control.service';
import { ControlGroup } from '@angular/common';
import {ChangeDetectorRef} from '@angular/core';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'dynamic-form',
templateUrl: 'app/dynamicform/form.component.html',
directives: [REACTIVE_FORM_DIRECTIVES],
providers: [QuestionControlService]
})
export class DynamicFormComponent implements OnInit {
@Input() questions: QuestionBase<any>[] = [];
form: FormGroup;
payLoad:any;
payLoad2:any;
questiont: QuestionBase<any>;
questiond: QuestionBase<any>;
constructor(private qcs: QuestionControlService, private cdr: ChangeDetectorRef) { }
ngOnInit() {
this.form = this.qcs.toFormGroup(this.questions);
console.log("Form Init",this.questions);
this.questiont = JSON.parse(JSON.stringify(this.questions));
this.questiond = JSON.parse(JSON.stringify(this.questions));
}
onSubmit() {
this.payLoad = JSON.stringify(this.form.value);
this.payLoad2=this.payLoad;
this.questiont = JSON.parse(JSON.stringify(this.questions));
console.log("Submitted data",this.questions);
}
cancel(){
console.log("Canceled");
this.questions = JSON.parse(JSON.stringify(this.questiont));
}
clear(){
this.questions = JSON.parse(JSON.stringify(this.questiond));
this.questiont = JSON.parse(JSON.stringify(this.questiond));
console.log("Cleared");
this.cdr.detectChanges();
}
}
- J'ai le même message d'erreur après la mise à niveau. Va écrire ici si je trouve pourquoi.
- Bon, pour moi il a disparu quand j'ai importé le FormsModule dans mon NgModule déclaration. Mais j'ai toujours un message d'erreur indiquant "AppComponent a pas de route config." même si j'ai importé les routes. Mais de vérifier si elle de résoudre votre problème.
- Cela peut aider stackoverflow.com/a/49628169/6597375
- Double Possible de Can pas se lier à 'ngModel', car il n'est pas connu de la propriété de 'entrée'
Vous devez vous connecter pour publier un commentaire.
Trouvé solution rapide, mise à jour de votre @NgModule code comme ceci :
Source: Ne peut pas se lier à ‘ngModel’, car il n'est pas connu de la propriété de ‘entrée’
FormsModule
dans le mêmeNgModule
que vous avez déclaré votre composant. Simple en disant: "faites de votre NgModule ressembler à ceci" n'est pas une très bonne réponse.Afin de rendre ngModel de travail lors de l'utilisation de AppModules (NgModule ), vous devez importer FormsModule dans votre AppModule .
Comme ceci:
J'ai rencontré une erreur similaire après la mise à jour RC5; c'est à dire Angulaire 2: ne Peut pas se lier à 'ngModel', car il n'est pas connu de la propriété de 'entrée'.
Le code sur Plunker vous montrer à l'aide de Angular2 RC4, mais l'exemple de code à https://angular.io/docs/ts/latest/cookbook/dynamic-form.html est à l'aide de NGModule qui fait partie de la RC5. NGModules est une modification importante de la RC4 à RC5.
Cette page explique la migration de la RC4 à RC5: https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html
J'espère que cela répond à l'erreur que vous obtenez et vous aider à aller dans la bonne direction.
En bref, j'ai dû créer un NGModule dans l'app.le module.ts:
J'ai ensuite changé de main.ts pour l'utilisation du module:
Bien sûr, j'ai aussi besoin de mettre à jour les dépendances de package.json. Voici mon dépendances de package.json. Certes, j'ai boité ensemble à partir d'autres sources (peut-être le ng docs exemples), de sorte que votre kilométrage peut varier:
J'espère que cela vous aide à mieux. 🙂
Vous devez également ajouter les disparus.
Vous venez d'ajouter
FormsModule
et l'importation de laFormsModule
dans votreapp.module.ts
fichier.Il suffit d'ajouter les deux lignes ci-dessus dans votre
app.module.ts
. Ça fonctionne très bien.Vous avez besoin d'importer FormsModule dans votre @NgModule Décorateur, @NgModule est présent dans votre moduleName.le module.ts fichier.
Étape à suivre
1. Ouvrez votre
app.module.ts
fichier..
2. Ajouter
import { FormsModule } from '@angular/forms';
.
3. Ajouter
FormsModule
àimports
commeimports: [ BrowserModule, FormsModule ],
.
Résultat Final ressemblera à ceci
Pour être en mesure d'utiliser
'ngModule'
, le'FormsModule'
(à partir de@angular/forms
) doit être ajouté à votreimport[]
tableau dans leAppModule
(devrait être là par défaut dans un CLI projet).D'abord importer FormsModule angulaires lib et sous NgModule déclaré des importations de
Vous avez besoin d'importer @angulaire, formes de dépendance à votre module.
si vous utilisez mnp, installer la dépendance :
Les importer dans votre module :
Et si vous utilisez SystemJs pour le chargement des modules
Maintenant, vous pouvez utiliser [(ngModel)] pour les deux moyens de liaison de données.
Supposons, votre ancienne application.le module.ts peut ressembler à ceci :
Maintenant importer FormsModule dans votre application.le module.ts
http://jsconfig.com/solution-cant-bind-ngmodel-since-isnt-known-property-input/
Cette réponse peut vous aider si vous utilisez Karma:
J'ai fait exactement comme il est mentionné dans @wmnitin réponse, mais l'erreur est toujours là. Lors de l'utilisation "ng servir" au lieu de "karma " démarrer", il fonctionne !
Pour quelque raison dans Angulaire 6 la simple importation de la FormsModule n'a pas résolu mon problème. Ce qui, enfin, fixe ma question est par l'adjonction de
Il est décrit à l'angle de tutoriel: https://angular.io/tutorial/toh-pt1#the-missing-formsmodule
Vous devez importer
FormsModule
et l'ajouter à l'importation de vos@NgModule
declaraction.