Строка запроса URL, средний стек - PullRequest
0 голосов
/ 03 октября 2018

У меня есть приложение со средним стеком. Как я могу сделать так, чтобы мой URL был таким?

skill / 1? Role = 123 & role = 456

service

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders,HttpParams } from '@angular/common/http';
import { Observable } from "rxjs";
import { GLOBAL } from '../global.service';

 @Injectable({
   providedIn: 'root'
})
export class ProfesionalService {
  public url: string;

constructor(private _http: HttpClient){
    this.url = GLOBAL.url;
  }
getProfe(token, role):Observable<any>{

   let headers = new HttpHeaders().set('Content-Type','application/json')
               .set('Authorization',token);

  return this._http.get(this.url+'ads/professsional/1?role='  + role,  
{headers: headers});
 }
 }

Компонент

getPro(){
this._route.params.forEach((params: Params) => {
  let role = params['role'];

this._professionalservice.getProfe(this.token,role).subscribe(
    response => {console.log(response.professionals)
        if(!response.professionals){
            this._router.navigate(['/']);
        }else{
           this.professionals=response.professionals;

        }

    },
    error => {
        var errorMessage = <any>error;
        console.log(errorMessage);
        if(errorMessage != null){
            this.status = 'error';
        }
    }
);}  
);
} 

маршрутизация

const appRoutes: Routes = [
{path: 'skill/:role', component: SkillComponent},
];

export const appRoutingProviders: any[] = [];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

действительна только для URL

skill / 1? Role = 123

Может ли кто-нибудь мне помочь или сказать, где я могу найти информацию?

1 Ответ

0 голосов
/ 03 октября 2018

Посмотрите, полезен ли вам этот код ниже.Я понял, что вы хотите динамически добавлять один и тот же queryParam для URL-адреса бэкенда.

И я предполагаю, что вы передаете параметр roles как массив, содержащий [123,456,789]

getProfe(token, roles : Array<number>):Observable<any>{
   let headers = new HttpHeaders().set('Content-Type','application/json')
               .set('Authorization',token);

    let url = this.url+'ads/professsional/1';

    if(roles.length > 0) {
        url += '?';  // concat '?'
        roles.forEach((r) => 
          {
              url += 'role=' + r + '&';         // add multiple params like role='123'
          }
        )
        url.splice(url.length-1, 1); // remove trailing &
    }   

  return this._http.get(url, {headers: headers});
}
...