首页 > 解决方案 > 如何在 Promise 中从 Angular 4 中的子组件调用父组件中的方法?

问题描述

我正在尝试使用 .emit(); 从 Angular 4 中的子组件调用父组件中的方法;

app.component.html

<parent-component (loadMoreData)="loadData()"></parent-component>

父组件html:

<div>
  <child-component [dataList]="dataList"></child-component>
</div> 

父组件.ts

public dataList : Array<any>;

constructor() {
    this.loadData();
  }

  ngOnInit() {

  }

  loadData(){
    //const options = this.getOptions();
    this.appServices.getDataList().subscribe((response) => {
      const respJson = response;
      this.dataList = respJson;
      console.log(this.assayDataList);
    });
  }

子组件.ts

@Output() loadMoreData : EventEmitter<boolean>;

public getRowData():Promise<any[]>{
    var self = this;
    return new Promise((resolve)=>{
      self.loadMoreData.emit(true);
      resolve(this.assayTableData);
    })
  }

我收到如下错误:

Error: Uncaught (in promise): TypeError: Cannot read property 'emit' of undefined

我究竟做错了什么?

标签: angulartypescript

解决方案


在子组件中,您应该初始化 EventEmitter。

@Output() loadMoreData : EventEmitter<boolean> = new EventEmitter<boolean>(false);

推荐阅读