Angular 2:无法将“ngModel”绑定到“input”的已知属性,因为它不是已知属性。

34 浏览
0 Comments

Angular 2:无法将“ngModel”绑定到“input”的已知属性,因为它不是已知属性。

我正在尝试在Angular 2中实现动态表单。我添加了其他功能,如删除和取消到动态表单中。

我遵循了这个文档:https://angular.io/docs/ts/latest/cookbook/dynamic-form.html

\"enter

我对代码进行了一些更改。我在这里遇到错误。

我该如何解决这个错误?

您可以在这里找到完整的代码:http://plnkr.co/edit/SL949g1hQQrnRUr1XXqt?p=preview ,它在plunker上运行正常,但在我的本地系统上无法运行。

Html代码:

{{question.label}} is required

Saved the following values {{payLoad}}

组件代码:

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[] = [];
  form: FormGroup;
  payLoad:any;
  payLoad2:any;
  questiont: QuestionBase;
  questiond: QuestionBase;
  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();
  }
}

admin 更改状态以发布 2023年5月22日
0
0 Comments

为了在使用 AppModules (NgModule) 时让 ngModel 正常工作,您需要在 AppModule 中导入 FormsModule 。像这样:

import { NgModule } from '@angular/core';
import { BrowserModule  } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent }   from './app.component';
@NgModule({
    declarations: [AppComponent],
    imports: [BrowserModule, FormsModule],
    bootstrap: [AppComponent]
})
export class AppModule {}

0
0 Comments

找到了快速解决方案,更新你的 @NgModule 代码如下:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }

来源:无法绑定到 'ngModel',因为它不是 'input' 的已知属性

0