如何在Angular2中传递DELETE请求中的参数

时间:2016-12-19 10:18:57

标签: javascript angular angular2-forms angular2-services

我正在尝试在 Angular 2 中创建Delete请求。

我所做的就是这样 -

import { Component } from '@angular/core';
import { Http, RequestOptions, URLSearchParams } from '@angular/http';
//import { Http, Response, Headers, RequestOptions, URLSearchParams } from '@angular/http';
import { Profile } from '../../dataModel/Profile.ts';   //Data Model

@Component({
    selector: 'profile-list',
    template: require('./profileList.component.html'),
    styles: [require('./profileList.component.css')]
})

export class ProfileListComponent
{
    private _deleteProfileUrl: string = "/api/Profile/Delete";

    constructor(private http: Http)
    {
    }

    public deleteProfile(profileId)
    {
        this.http.delete(this._deleteProfileUrl, new RequestOptions({
            // Have to make a URLSearchParams with a query string
            search: new URLSearchParams('profileId=' + profileId) // <-----
        }));

        alert("Deleted - " + profileId);
    }
}

所以,我正在创建一个像这样的删除请求 -

this.http.delete(this._deleteProfileUrl, new RequestOptions({
        // Have to make a URLSearchParams with a query string
        search: new URLSearchParams('profileId=' + profileId) // <-----
    }));

但它不起作用而且没有任何错误。

因为如果调用 deleteProfile 函数,则只会alert,但不会执行任何AJAX请求。

因为在调用函数后我有这样的东西 -

enter image description here

我确信API工作正常。

那么,任何人都可以帮助我,我做错了吗?

此外 -

我的完整代码可以找到here (if needed)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

可观察者很懒惰。即使您不想处理响应,也必须订阅它们才能执行请求。所以你可以这样写:

this.http.delete(this._deleteProfileUrl, new RequestOptions({
     search: new URLSearchParams('profileId=' + profileId)
   })).subscribe(res => {
     alert("Deleted - " + profileId);
   });