typescript - ng2-file-upload 响应范围
问题描述
我想从 onCompleteItem 中获取响应。
如何在 Uploader.onitemcomplete 之外访问 onitemcomplete 响应
我尝试在函数外部定义数组,然后将值推送到函数中,但它也不起作用
这是我的代码...
add(data,action){
this.data.loader = true;
this.uploader.uploadAll();
this.uploader.onAfterAddingFile = (file) => { file.withCredentials = false; };
this.uploader.onCompleteItem = (item: any, response: any, status: any, headers: any) => {
this.data.dp = JSON.parse(response);
**HERE IS THE RESPONSE**
};
//console.log(this.data.dp);
var frmData = JSON.stringify({'fname': data.fname,'mname':data.mname,'lname':data.lname,
'contact':data.phone, 'email':data.email, 'address':data.address, 'country':data.country, 'state':data.state,
'pin':data.pin, 'uimg':**WANT TO ACCESS IT HERE**});
console.log(this.data.headers);
if(action == 'Save'){
this.http.post("http://127.0.0.1/ci/index.php/api/account/register",frmData,this.options)
.map(res => res.json())
.subscribe(data => {
this.data.loader = false;
this.data.message = data.message;
this.snackBar.open('Registered Successfully.', '', {
duration: 3000,
});
}
else {
this.snackBar.open(data.message, '', {
duration: 3000,
});
}
this.data.fname = '';
this.data.mname = '';
this.data.lname = '';
this.data.phone = '';
this.data.email = '';
this.data.address = '';
this.data.pin = '';
this.data.state = '';
this.data.country = '';
},error => {
this.data.message = 'Error';
});
}
解决方案
onComplete 中的代码异步执行。如果您希望在调用 onComplete 之后执行它之后的代码,您需要将其移动到它自己的方法并调用它。
它看起来像这样:
class Component {
private data: any;
private uploader: any;
add(data, action) {
this.data.loader = true;
this.uploader.uploadAll();
this.uploader.onAfterAddingFile = (file) => {
file.withCredentials = false;
};
this.uploader.onCompleteItem = (item: any, response: any, status: any, headers: any) => {
this.data.dp = JSON.parse(response);
// when on complete ends we set the avatar
this.setAvatar(data, action);
};
}
private setAvatar(data, action) {
//console.log(this.data.dp);
var frmData = JSON.stringify({
'fname': data.fname,
'mname': data.mname,
'lname': data.lname,
'contact': data.phone,
'email': data.email,
'address': data.address,
'country': data.country,
'state': data.state,
'pin': data.pin,
'uimg': ** WANT TO ACCESS IT HERE **
});
console.log(this.data.headers);
if (action == 'Save') {
this.http.post("http://127.0.0.1/ci/index.php/api/account/register", frmData, this.options)
.map(res => res.json())
.subscribe(data => {
this.data.loader = false;
this.data.message = data.message;
this.snackBar.open('Registered Successfully.', '', {
duration: 3000,
});
} else {
this.snackBar.open(data.message, '', {
duration: 3000,
});
}
this.data.fname = ''; this.data.mname = ''; this.data.lname = ''; this.data.phone = ''; this.data.email = ''; this.data.address = ''; this.data.pin = ''; this.data.state = ''; this.data.country = '';
}, error => {
this.data.message = 'Error';
});
}
}
推荐阅读
- mysql - 将 dockerized mysql 容器部署到边缘设备
- html - CSS下拉菜单不会消失
- reactjs - 如何计算 Firestore 中数组数据中的元素数?
- angular - Angular 7 库 - 如何捆绑依赖项而不将它们添加到主应用程序
- c# - 如何在 Windows 10 上的 UWP 应用和 iOS 设备上的 Xamarin.Forms 应用之间创建 TCP 套接字
- angular - AmCharts 4:网格步骤
- java - Junit 5,Spring 应用程序上下文未在 @DirtiesContext 上关闭
- html - html输入返回未定义的快递
- visual-studio-code - 为什么 VS Code 需要这么多内存?我怎样才能让它更有效地运行内存?
- python - 如何通过 SQLAlchemy 从 Postgres 函数返回可读结果?