angular - 如何在 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
我究竟做错了什么?
解决方案
在子组件中,您应该初始化 EventEmitter。
@Output() loadMoreData : EventEmitter<boolean> = new EventEmitter<boolean>(false);
推荐阅读
- android - 从 Firebase 控制台中删除 Firebase 用户时(用户登录后),它不会反映在应用程序中
- ms-access - 在 ms 访问中创建动态查询
- java - 使用 PDFBox 从 PDF 中提取数据时如何用单词替换空格
- python - 如何通过实例方法传递整数并将其添加到实例变量中?
- php - 从 PHP 执行 Shell 脚本 (Nginx, php-fpm, CentOS 7)
- android - ImageView 部分位于布局之上
- mysql - 在JS中将数组的字符串转换为数组
- java - 异常后如何继续循环do while
- mysql - SQL:从多个表中查询相关数据
- celery - 无法使用 systemd 从气流启动芹菜工人