如何从父组件中的子组件调用函数

时间:2017-09-11 13:56:57

标签: javascript angular typescript angular2-components

我有父组件

<div md-dialog-content>
  <div class="section-top">
    <p id="title" style="float:left;">Adding Dockument</p>
    <div md-dialog-actions style="float:right;">
      <button class="edm-button inline" md-button (click)="onNoClick()" tabindex="-1">Cancel</button>
      <button class="edm-button inline" md-button (click)="onClick()" tabindex="-1">Confirm</button>
    </div>
  </div>
  <div>
    <app-document-data [buttonMessage]="buttonMessage"></app-document-data>
  </div>
</div>

在Child组件中我有方法 onSubmit(){}

我有一个问题,当我点击parrent组件中的按钮确认时,何时调用onSubmit()函数。

我知道我可能应该使用@Input和@Output装饰,但我不知道如何正确。

2 个答案:

答案 0 :(得分:1)

更容易:为您的孩子提供模板参考,您可以调用其功能:(我猜你的第二个按钮会拨打电话)

<div md-dialog-content>
  <div class="section-top">
    <p id="title" style="float:left;">Adding Dockument</p>
    <div md-dialog-actions style="float:right;">
      <button class="edm-button inline" md-button (click)="onNoClick()" tabindex="-1">Cancel</button>
      <button class="edm-button inline" md-button (click)="appDD.onSubmit()" tabindex="-1">Confirm</button>
    </div>
  </div>
  <div>
    <app-document-data #appDD [buttonMessage]="buttonMessage"></app-document-data>
  </div>
</div>

答案 1 :(得分:1)

在您的父组件中:

onClick(){
  this.buttonMessage = true;

在你的孩子身上:

@Input() buttonMessage: boolean;

并且ngOnChanges:

ngOnChanges(changes: any) {
  if(changes.buttonMessage.currentValue){
     this.onSubmit();