angular 2 - ng-bootstrap NgbTypeahead:连接多个源

时间:2017-03-13 10:05:39

标签: angular rxjs

我想在我的预先输出结果中连接更多http源的结果。 基本上是在plunker https://ng-bootstrap.github.io/app/components/typeahead/demos/http/plnkr.html中实现的。 添加第二个wiki源...

1 个答案:

答案 0 :(得分:0)

通过正确嵌套请求,我想出了解决这个问题。 在plunker中替换以下代码。

search(term: string) {
if (term === '') {
  return Observable.of([]);
}

let wikiUrl = 'https://en.wikipedia.org/w/api.php';
let wikiUrl2 = 'https://de.wikipedia.org/w/api.php';
let params = new URLSearchParams();
params.set('search', term);
params.set('action', 'opensearch');
params.set('format', 'json');
params.set('callback', 'JSONP_CALLBACK');

return this._jsonp
  .get(wikiUrl, {search: params)
  .map(response => response.json()[1])
  .switchMap(responseEN => this._jsonp
    .get(wikiUrl2, {search: params)
    .map(response => {
      let responseDE = response.json()[1];
      responseEN.forEach(function(value){
        console.log(value);
        responseDE.push(value);
      })
      return responseDE;
      })
  );

}