首页 > 解决方案 > 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';
      });


  }

标签: typescriptangular6

解决方案


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';
        });


  }
}

推荐阅读