Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 函数调用async时未定义服务_Angular_Promise_Async Await - Fatal编程技术网

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>