Как использовать http delete () в Angular 6 - PullRequest
0 голосов
/ 19 декабря 2018

myService.ts

  import { Injectable } from '@angular/core';
  import { Http, Response,Headers,RequestOptions } from '@angular/http';
  import { Observable } from 'rxjs';
  import 'rxjs/Rx';
  import{Router} from'@angular/router';
  import 'rxjs/add/operator/map';
  @Injectable()
  export class ManageJobDeleteService{
    constructor(private http: Http,private router:Router){};
    DeleteRequestToAPI(post_jobs_id:string){
       let body = JSON.stringify({post_jobs_id:post_jobs_id});
       let headers = new Headers({ 'Content-Type': 'application/json'});
       let options = new RequestOptions({ headers: headers });
        console.log(body);
        console.log(options);
      return this.http.delete('http://127.0.0.1:8000/api/employer/post_jobs/',body,options)//HERE I AM GETTING ERROR
      .map(this.extractData)
      .catch(this.handleError);
    }
   private extractData(res: Response){
      let body = res.json();
      console.log(body);
      return body || [];   
    }
    private handleError (error: any) {
      console.error(error);
      return Observable.throw(error.json().error || 'Server error');
    }
  }

ОШИБКА:

Ожидается 1-2 аргумента, но получено 3.ts (2554).

Подскажите, пожалуйста, как передать и текст, и параметры, используя http-запрос на удаление в Angular 6.

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Как насчет определения вашего post_jobs_id в вашем URL?И после этого получите id в своем бэкэнде.

Например, вы можете определить:

DeleteRequestToAPI(post_jobs_id:string) {
    const url = `http://127.0.0.1:8000/api/employer/post_jobs/${post_jobs_id}`;
    return this.http.delete(url, {
        headers: new HttpHeaders({ 'Content-Type': 'application/json' })
    })
    .map(this.extractData)
    .catch(this.handleError);
}
0 голосов
/ 19 декабря 2018

, если ваш сервер является узлом и выражает

router.delete ('/ post_jobs /: id', (req, res) => {let post_jobs_id = req.params.id})

0 голосов
/ 19 декабря 2018

при удалении аргумент тела отсутствует.

, поэтому необходимо удалить аргумент тела.

this.http.delete('http://127.0.0.1:8000/api/employer/post_jobs/',options)

Ссылка

class HttpClient {
     delete(url: string, 
       options: { headers?: HttpHeaders | { [header: string]: string | string[]; }; 
       observe?: HttpObserve; params... = {}): Observable<any>
}

Редактировать: Как я могу передать post_jobs_id?

вы можете использовать HttpParams:

let httpParams = new HttpParams().set('aaa', '111');
httpParams.set('bbb', '222');

let options = { params: httpParams };

this.http.delete('http://127.0.0.1:8000/api/employer/post_jobs/',options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...