我有一个Angular4应用程序,它使用我的api调用服务来发布记录。
当theAssignmentChanged
值为true
时,它会发送短信。当false
时,它只是跳过它。
在以下代码中,console.log
将theAssignmentChagned
标记显示为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。它恰好在此之后正确计时。通知并在下一行之前。我添加了异步等待,它现在正常工作。