【问题标题】:How to create reusable nested subform component using AngularJS 2如何使用 AngularJS 2 创建可重用的嵌套子表单组件
【发布时间】:2016-06-14 20:00:58
【问题描述】:

我正在使用 Angular2 创建一个 Web 应用程序。我有几个数据输入屏幕,用户必须在其中输入邮政地址,该地址是公司或个人等实体的较大数据输入的一部分。

所以我很自然地想创建一个地址表单组件,它可以作为子表单重复使用,并以某种方式嵌入或包含在更大的表单中。这似乎应该是可能的,但我无法创建示例或查找示例。我试图创建一个以 FormBuilder 作为输入的子组件,但这不起作用。

我的问题是我似乎无法成功地将封闭的

标记传达给我的 html 模板。

有人知道这种方法吗?

【问题讨论】:

标签: angular


【解决方案1】:

仅适用于

我不知道这是否是一个好方法,但它似乎有效

@Component({
  selector: 'address-form',
  providers: [],
  styles: [':host {display: inline-block; border: 1px solid blue;}'],
  template: `

    <input [ngFormControl]="street">
    <input [ngFormControl]="zip">
  `,
  directives: []
})
export class AddressForm {
  street = new Control('', Validators.minLength(3));
  zip = new Control('', Validators.required);
  isSet:boolean;
  @Input() group;
  constructor() {}

  ngOnChanges() {
    setTimeout(()=> {
      this.group.control.addControl('street', this.street);
      this.group.control.addControl('zip', this.zip);
    });
  }
}
  <form #f="ngForm">
    <input ngControl="custId"> 
    <address-form ngControlGroup="address" #addrGroup="ngForm" [group]="addrGroup"></address-form>
  </form>

Plunker example

另请参阅 Kara 与 Plunker https://github.com/angular/angular/issues/10251#issuecomment-238737954 的此评论

【讨论】:

  • 朋克没有运行。显示以下错误GET https://npmcdn.com/@angular/core@4.0.3/core.umd.js 404 ()
  • 它只适用于旧的 Angular 版本。我认为更好的方法是无论如何在子组件中实现ControlValueAccessor
  • 我在这里也找到了模板驱动的方法。这是非常好的。 stackoverflow.com/questions/42352680/…。修改后的 Plunker 在这里:plnkr.co/edit/vuCLmgSckv63GjMipa0m?p=preview
  • 感谢您的链接。
猜你喜欢
  • 2017-07-20
  • 2017-08-04
  • 2013-03-09
  • 2018-08-24
  • 2020-08-06
  • 2018-10-11
  • 2021-06-25
  • 2019-02-01
  • 2016-08-04
相关资源
最近更新 更多