【问题标题】:Need to make a call between multiple components in Angular 2需要在 Angular 2 中的多个组件之间进行调用
【发布时间】:2017-03-05 01:33:54
【问题描述】:

我正在尝试制作一个 Angular 2 项目,并且需要在多个组件之间进行调用。像这样的

<ParentComponent>
    <ChildComponent>
        <ChildComponent 1>
        </ChildComponent 1>
    </ChildComponent> 
</ParentComponent>

我正在尝试通过使用组件引用并尝试从父模板访问属性和方法来在 ParentComponent 和 ChildComponent 之间共享信息。 我可以在一个表单中查看所有三个组件的字段名称,但无法在我的父表单中访问 c​​hildComponent 的值。

表单值:

Here is my plunker

我是 Angular 2 的新手。请帮助我如何做到这一点。

【问题讨论】:

  • 使用@output装饰器learnangular2.com/outputs
  • 您能否根据您的 plunker 示例更新您的帖子代替父..子..子1..

标签: angular plunker


【解决方案1】:

您需要在父级中构建整个表单,然后将内部 FormGroups 传递给子级和孙级。所以你的父母构建了整个表单:

ngOnInit() {
    this.myForm=this._fb.group({
        subAppName: ['', [Validators.required]],
        vendorDetails: this._fb.group({
         buildType: [''],
         primaryLang: [''],
         product: this._fb.group({
           vendorName: [''],
           productName: ['']
         })
       }),
        subAppType:['', [Validators.required]],
    });
}

然后从您的父级,将 vendorDetails 组传递给供应商组件:

<subapp-vendor #vendortest [vendorDetails]='myForm.controls.vendorDetails'></subapp-vendor>

并在供应商中为表单组使用@Input:

@Input() vendorDetails: FormGroup;

并在您的视图中使用该 formGroup 名称以及您在父级中定义的 formcontrolnames。在这里,您还将内部 formGroup 传递给该子组件的子组件,就像您从父组件中所做的一样:

<div [formGroup]="vendorDetails">
      <label>Built Type</label>
      <div class="radio" *ngFor="let buildType of buildTypes">
        <label>
          <input type="radio" formControlName="buildType" [value]="buildType.value">
          {{buildType.display}}
        </label>
    </div>

  <subapp-product #producttest [product]="vendorDetails.controls.product"></subapp-product> 
    <label>Primary Language</label>
    <input type="text" class="form-control" formControlName="primaryLang">
  </div>

aaa 然后当然在产品组件的视图中使用@Input 和formGroup product,就像上面一样。

这是你的forked plunker

【讨论】:

  • 附言。我建议您更改问题的标题和内容,因为这是关于动态表单和父母 -> 孩子 -> 孩子的沟通。这与您当前的问题完全不同:)
  • 不客气! :) 既然它解决了您的问题,请考虑通过单击此答案投票下的灰色勾号来接受答案:) meta.stackexchange.com/a/5235
猜你喜欢
  • 1970-01-01
  • 2015-12-17
  • 2017-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2016-05-07
  • 2018-04-16
  • 1970-01-01
相关资源
最近更新 更多