如何在Angular 6中将查询字符串传递给我的服务

如何在Angular 6中将查询字符串传递给我的服务,angular,typescript,Angular,Typescript,我有一个调用服务的组件,如下所示: this.resultService.getResults().subscribe( results => { this.results = results; this.searchResults = results.SearchResults; this.searchResults = this.processResults(this.searchResults);

我有一个调用服务的组件,如下所示:

this.resultService.getResults().subscribe(
      results => {
        this.results = results;
        this.searchResults = results.SearchResults; 
        this.searchResults = this.processResults(this.searchResults);                      
      },
      error => this.errorMessage = <any>error
    );
this.resultService.getResults().subscribe(
结果=>{
这个结果=结果;
this.searchResults=results.searchResults;
this.searchResults=this.processResults(this.searchResults);
},
error=>this.errorMessage=错误
);
该服务使用HttpClient从网站获取数据。现在,我在服务中使用静态URL只是为了测试。但是,现在我知道该服务可以工作并返回结果,我希望传入要在URL中使用的查询字符串,而不是硬编码。这可能吗?我的服务包含以下代码:

private resultsUrl = 'https://testingsite.com/api/orgs/search?primaryCategory=plumber&city=denver&stateProvince=CO&PageNumber=1';  

  constructor(private http: HttpClient) { }

  getResults(): Observable<any> {
    return this.http.get<any>(this.resultsUrl, httpOptions).pipe(
      tap(data => console.log('Response Data: ' + JSON.stringify(data))),
      catchError(this.handleError)
    );
  }

  private handleError(err: HttpErrorResponse) {
    let errorMessage = '';
    if (err.error instanceof ErrorEvent) {
      errorMessage = 'An error occurred: ${err.status}, error message is: ${err.message}';
    }
    console.error(errorMessage);
    return throwError(errorMessage);
  }
private resultsUrl='2〕https://testingsite.com/api/orgs/search?primaryCategory=plumber&city=denver&stateProvince=CO&PageNumber=1';  
构造函数(私有http:HttpClient){}
getResults():可观察{
返回this.http.get(this.resultsUrl,httpOptions).pipe(
轻触(data=>console.log('Response data:'+JSON.stringify(data)),
catchError(this.handleError)
);
}
私有句柄错误(错误:HttpErrorResponse){
让errorMessage='';
if(error.error instanceof ErrorEvent){
errorMessage='发生错误:${err.status},错误消息为:${err.message}';
}
控制台错误(错误消息);
返回投掷器(错误消息);
}

您可以使用``并将变量放入$like中:

getResults(variable:string): Observable<any> {
    let url = `this.baseUrl/admin/user/${variable}` 
    return this.http.get<any>(url, httpOptions).pipe(
      tap(data => console.log('Response Data: ' + JSON.stringify(data))),
      catchError(this.handleError)
    );
  }
getResults(变量:字符串):可观察{
让url=`this.baseUrl/admin/user/${variable}`
返回此.http.get(url,httpOptions).pipe(
轻触(data=>console.log('Response data:'+JSON.stringify(data)),
catchError(this.handleError)
);
}

是。如果可能,您需要使服务方法接受参数,并使用将参数传递给服务

this.resultService.getResults("1234");
你的方法是

getResults(category:string): Observable<any> {
    //form the url here
    return this.http.get<any>(this.resultsUrl, httpOptions).pipe(
      tap(data => console.log('Response Data: ' + JSON.stringify(data))),
      catchError(this.handleError)
    );
  }
getResults(类别:字符串):可观察{
//在这里形成url
返回this.http.get(this.resultsUrl,httpOptions).pipe(
轻触(data=>console.log('Response data:'+JSON.stringify(data)),
catchError(this.handleError)
);
}

你被卡在哪一部分?请注意,您可以将查询参数作为对象传递给请求方法,而不是将它们烘焙到URL中。是的,我希望传入查询参数,而不是烘焙到URL中。我看看能不能找到一个这样做的例子。非常感谢。我接受了下面的答案,只是为了解决这个问题。但是,我现在将研究如何传递请求中使用的查询参数。谢谢大家的帮助!是的,这起作用了。我非常感激。根据我所获得的知识,我现在将研究如何传入查询参数以在请求中使用,而不必修改URL。再次感谢你的帮助!谢谢你的建议!