Angular 函数调用async时未定义服务
在组件中,我有一个调用服务的简单方法:Angular 函数调用async时未定义服务,angular,promise,async-await,Angular,Promise,Async Await,在组件中,我有一个调用服务的简单方法: sendRequest() { this.myService .doStuff() .then((res) => { ... } } 这个doStuff()方法是一个http.post转换的toPromise() 我基本上是在尝试实现这一点: 使用http.post而不是超时承诺。将函数作为输入传递。然后它就失去了上下文。sendRequest中的this不再引用父组件。可能的解决方法是将lambda传递给
sendRequest() {
this.myService
.doStuff()
.then((res) => { ... }
}
这个doStuff()
方法是一个http.post
转换的toPromise()
我基本上是在尝试实现这一点:
使用http.post而不是超时承诺。将函数作为输入传递。然后它就失去了上下文。
sendRequest
中的this
不再引用父组件。可能的解决方法是将lambda传递给输入
,如下所示:
const lambda = () => this.sendRequest()
和html格式:
<my-child [callback]="lambda"></my-child>
将函数作为输入传递。然后它就失去了上下文。
sendRequest
中的this
不再引用父组件。可能的解决方法是将lambda传递给输入
,如下所示:
const lambda = () => this.sendRequest()
和html格式:
<my-child [callback]="lambda"></my-child>
似乎您的服务不在您的组件中。您的组件构造函数是什么样子的?@ChrisNewman服务注入正确。我可以在单击时直接调用它,只需在一个简单的按钮上单击(click)=“sendRequest()”。但不要从子组件尝试在sendRequest()的开头添加console.log(this)。您可能会看到“this”指的是您的子组件,它的构造函数中没有服务。似乎您的服务不在您的组件中。您的组件构造函数是什么样子的?@ChrisNewman服务注入正确。我可以在单击时直接调用它,只需在一个简单的按钮上单击(click)=“sendRequest()”。但不要从子组件尝试在sendRequest()的开头添加console.log(this)。您可能会看到“this”指的是您的子组件,它的构造函数中没有服务。
<my-child [callback]="lambda"></my-child>
<my-child (onEvent)="sendRequest()"></my-child>