Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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 2中,如何在没有可观察性的情况下调用http方法_Angular - Fatal编程技术网

在Angular 2中,如何在没有可观察性的情况下调用http方法

在Angular 2中,如何在没有可观察性的情况下调用http方法,angular,Angular,当我调用这个函数时,console.log()可以工作,但是http.delete方法从来没有运行过,我假设是因为我还没有订阅observable 因为我是通过表单上的按钮打电话的,我不在乎返回任何东西,所以有没有办法直接打电话 deleteCompany(id) { console.log('from data service: ', id); this.http.delete(this.url + 'Companies/' + id + '?' + this.t

当我调用这个函数时,console.log()可以工作,但是http.delete方法从来没有运行过,我假设是因为我还没有订阅observable

因为我是通过表单上的按钮打电话的,我不在乎返回任何东西,所以有没有办法直接打电话

  deleteCompany(id) { 
      console.log('from data service: ', id);
      this.http.delete(this.url + 'Companies/' + id + '?' + this.token).map(res => res.json());
   }
编辑: 我选择了这个。这是正确的处理方法吗

import 'rxjs/add/operator/toPromise';
...
return this.http.delete(this.url + 'Companies/' + id + '?' + this.token).toPromise();

不。observable是懒惰的,在调用
subscribe
toPromise
之前不会做任何事情。

正如@Gunter所指出的,如果你想使用observable,你需要调用
subscribe
。如果您希望返回某些内容(因为承诺不是懒惰的),可以将
可观察的
转换为
承诺
,如下所示:

import 'rxjs/add/operator/toPromise';
     deleteCompany(id) { 
          console.log('from data service: ', id);
         return this.http.delete(this.url + 'Companies/' + id + '?' + this.token).toPromise();
       }
要使用它,请在组件中使用
然后
而不是
订阅
。e、 g:

this._yourServiceName.deleteCompany(this._id).then((data)=> console.log(data), (err) => console.log("error occured", err););

编辑:“看起来不错。您还可以调用
subscribe()
,而无需传递回调。我想这会让我们更清楚地知道目的是什么。谢谢你的回答。为了确保我理解(我对这一点很陌生),在您的示例中,您正在映射响应,以便我在组件中使用一些东西,然后使用.promise实际触发http调用,对吗?既然我注意到你没有使用它,“return”怎么会适合这个呢?你是对的。我忘了返回可观察的(现在编辑)。通常,我们使用
map
(或任何其他方法)来转换数据流。使用
map(res=>res.json()
将把响应解析为json,我们在这里不需要使用它。
toPromise
方法将返回一个承诺,该承诺将使用组件中的
然后
方法来解析。