javascript - 为什么@angular 表单中没有 FormArrayDirective?

标签 javascript angular angular2-forms angular4-forms

根据最新版本的 Angular ,@angular/forms 导出以下内容:

export {FormControlDirective} from './directives/reactive_directives/form_control_directive';
export {FormControlName} from './directives/reactive_directives/form_control_name';
export {FormGroupDirective} from './directives/reactive_directives/form_group_directive';
export {FormArrayName} from './directives/reactive_directives/form_group_name';
export {FormGroupName} from './directives/reactive_directives/form_group_name';
FormContolNameFormControlDirective , FormGroupNameFormGroupDirective , 但是 FormArrayName没有FormArrayDirective , 为什么?

最佳答案

我认为这是不必要的。好吧,你可以创建指令,有些像

@Directive({
  selector: '[formArrayName]'
})
export class FormArrayDirective implements OnInit {
  formArray: FormArray;
  constructor(
    private el: ElementRef,
    @Host() @Optional() public form: FormGroupDirective
  ) {}
  ngOnInit() {
    this.formArray = this.form
      ? (this.form.form.get(
          this.el.nativeElement.getAttribute('formArrayName')
        ) as FormArray)
      : null;
  }
}

更新 在我们有 FormGroupDirective 之前,我认为最好有 FormGroup
新指令
@Directive({
  selector: '[formArrayName]'
})
export class FormArrayDirective implements OnInit {
  formArray: FormArray;
  form:FormGroup;
  constructor(
    private el: ElementRef,
    @Host() @Optional() private formDirective: FormGroupDirective
  ) {}
  ngOnInit() {
    this.formArray = this.formDirective
      ? (this.formDirective.form.get(
          this.el.nativeElement.getAttribute('formArrayName')
        ) as FormArray)
      : null;
      this.form=this.formDirective?this.formDirective.form:null
  }
}
该指令公开了两个属性:formformArray ,但请注意,您只能从具有 @ViewChild(FormArrayDirective) 的组件访问此属性。在 ngAfterViewInit 中
好奇心,得到它的目的是什么?

关于javascript - 为什么@angular 表单中没有 FormArrayDirective?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670415/

相关文章:

php - 使用 Angular 将 Post 发送到 PHP 文件

Angular 验证错误为 'ngClass',因为它不是 'div' 的已知属性。 (

php - 可以做程序化的PHP,想做JavaScript,需要先做OOP PHP?

具有带连字符的属性的 Angular 2 关键帧动画

angular - 在哪里指定删除输出路径?

validation - 提交时的 Angular 2 触发器表单验证

Angular 2 Reactive Forms 问题如何以 Angular 方式而不是 jquery 方式进行

javascript - 如何使用容器元素中包含的静态英雄标题文本创建响应式 Bootstrap 轮播?

JavaScript 提升函数与函数变量

javascript - React - 无法设置状态值