【问题标题】:Get item from Observable in Angular 2 with Typescript使用 Typescript 从 Angular 2 中的 Observable 获取项目
【发布时间】:2016-08-19 05:14:14
【问题描述】:

我正在尝试从服务提供的 Angular 2 中的 observable 中获取项目。到目前为止,我可以订阅 observable 并在控制台中查看内容,但无法通过它的 ID 过滤掉一个项目。我已经尝试了以下方法,但得到一个空白屏幕。任何提示表示赞赏。

service.ts:

getJobs() {
  this.observableData = this._http.get('json_path/')
      .map(res => res.json())
      .do(val => {
        this.result = val;
        this.observableData = null;
      })
      .share();
  return this.observableData;
}

component.ts:

let id = this._routeParams.get('id');
this._jobService.getJobs().map(jobs => jobs.filter(item => item.id === id).subscribe(job => this.job = job)[0]);

【问题讨论】:

  • 这是故意的。您发布了getItems() 方法,然后使用下面的getJobs() 方法。
  • 啊,那是个错误。它们都应该是 getItems() 或 getJobs()。谢谢

标签: javascript typescript angular typescript1.8


【解决方案1】:

我想你想要这样的东西:

let id = this._routeParams.get('id');
this._jobService.getJobs().map(jobs => {
  return jobs.filter(item => item.id === id)[0];
}).subscribe(job => this.job = job));

你不能订阅jobs.filter()的结果

【讨论】:

  • 这似乎对我不起作用 - 变量返回未定义或空。尽管代码在控制台中运行时没有错误,所以语法看起来是正确的 :) 我会继续调整它。谢谢。
  • 我通过将 [0] 索引移动到 jobs.filter() 而不是 .subscribe() 的结果来让它工作。 this._jobService.getJobs().map(jobs => { return jobs.filter(item => item.id === id)[0]; }).subscribe(job => this.job = job);
猜你喜欢
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多