javascript - Angular 中带有子组件的 react 形式

标签 javascript angular typescript

如您所见,我有一个父表单组件和一个子组件。 {{myFormFather.value}} 显示nickName 值和name 值但不显示age 值。 {{myFormFather.status}} 它不识别子组件。就像我的 child 是一个幻影,为什么?

my-form-father.html

<form [formGroup]="myFormFather" (ngSubmit)="onSubmit()">
    <input formControlName="nickName">
    <input formControlName="name">
    <my-form-child
            [age]="myFormFather">
    </my-form-child>
    <button type="submit"
            [disabled]="myFormFather.invalid">Save
    </button>
</form>

my-form-father.ts

myFormFather = new FormGroup({
    nickName: new FormControl(),
    name: new FormControl()
});

constructor(private fb:FormBuilder) {}

ngOnInit() {this.createForm()}

createForm() {
    this.myFormFather = this.fb.group({
        nickName: ['', [Validators.required],
        name: ['', [Validators.required]
    });
}

my-form-child.html

<div [formGroup]="ageForm">
    <input formControlName="age">
</div>

my-form-child.ts

@Input() ageForm = new FormGroup({
    age: new FormControl()
});

constructor(private fb:FormBuilder) {}

ngOnInit() {this.createForm()}

createForm() {
    this.ageForm = this.fb.group({
        age: ['', [Validators.required]]
    });
}

最佳答案

Hi, the solution you have been looking for

演示 Stack Blitz

Problem was: You overwrote the form group being passed from the parent

@Input() ageForm = new FormGroup({
  age: new FormControl()
});

constructor(private fb: FormBuilder) {}

ngOnInit() {
  this.createForm()
}

createForm() {
  // This is overwriting the FormGroup passed from parent!
  this.ageForm = this.fb.group({
    age: ['', [Validators.required]]
  });

  // Instead you had to use
  // this.ageForm.addControl("age", new FormControl('', Validators.required));
}

关于javascript - Angular 中带有子组件的 react 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063502/

相关文章:

javascript - 如何使美化代码在一行中工作?

javascript - "@angular/http"和 "@angular/common/http"中的 Angular 的 httpClient 有什么区别?

javascript - 在 Angular 中订阅并返回一个可观察值

angular - Angular Material 的默认图标列表 2+

Angular mat-select-search可重用下拉组件,如何控制传递的对象数组和控制函数执行?

reactjs - 如何根据键从 Typescript 的 Dictionary 数据结构中删除条目?

javascript - 在 Eclipse 中禁用检查特定的 JavaScript 错误

javascript - 使用 snap.svg 沿 svg 路径对对象进行动画制作和定向

javascript - jQuery 电子邮件正则表达式

angular - 使用 tap() 而不是 map() RxJS 和 Angular