调用函数后,在.then内失去范围

时间:2018-04-17 13:44:59

标签: javascript angular typescript

我有一个Angular4应用程序,它使用我的api调用服务来发布记录。

theAssignmentChanged值为true时,它会发送短信。当false时,它只是跳过它。

在以下代码中,console.logtheAssignmentChagned标记显示为true,但服务调用中的console.log将其显示为false

我失去了this的范围,而且我已经看过堆栈交换,并且找不到任何可以解释原因的内容。

为什么我在this的电话中失去了FService的范围?

    console.log("Before : " + myForm.controls.theAssignmentChanged.value);
    this.FService.reqExec(formToPost, 'service', action)
    .then( data => {
      this.notify.success('Success','DB Update Successful!');
      console.log(" After : " + myForm.controls.theAssignmentChanged.value);

      if (myForm.controls.theAssignmentChanged.value) {
         this.messageService.sendMessage(telToText, 'Hi, the service has been changed, please review the changes.');
            }
            this.closeModal('services');
            resolve(data);
        })
        .catch(errorCode => {
            console.log(errorCode);
            reject(errorCode);
        });
      } else {
        this.closeModal('services');
        resolve(data);
      }
    });
  })

这与访问此内部的javascript不同,因为我尝试过它并没有用,而且......当这个功能不在服务中时,它工作正常。它只是在我从父组件中取出并将其放在子服务中时才开始发生。

谢谢大家......发生的事情是这个范围发生了变化。是的,this.notify工作,发生了什么是在调用过程后发生的异步条件,由于后续过程中断,此过程的范围变为null。它恰好在此之后正确计时。通知并在下一行之前。我添加了异步等待,它现在正常工作。

0 个答案:

没有答案