angular - .filter 不是 Angular2 的函数

标签 angular

我收到错误异常:TypeError:articles.filter不是函数 为我服务

import {Injectable} from 'angular2/core';
import {Http} from 'angular2/http';
import 'rxjs/Rx';

 @Injectable()

 export class ArticlesService {
     http:Http;
     constructor(http:Http) {
     this.http = http;
    }

getArticle(id: number) {
return Promise.resolve('./articles.json').then(
  articles => articles.filter(article => article.id === id)[0]
     );
  }
 }

My Plunker但在《英雄之旅》中效果很好

最佳答案

问题很简单。它对您不起作用,因为您的服务使用字符串而不是数组进行解析:

getArticle(id: number) {
  return Promise.resolve('./articles.json').then(
    articles => articles.filter(article => article.id === id)[0]
  );
}

注意,Promise.resolve('./articles.json') ( documentation ) 用字符串解析。

正确的代码应该是这样的:

import {Injectable} from 'angular2/core';
import {Http} from 'angular2/http';
import 'rxjs/Rx';

@Injectable()
export class ArticlesService {

  http: Http;

  constructor(http: Http) {
    this.http = http;
  }

  getArticle(id: number) {
    return this.http.get('./articles.json')
        .map(res => res.json())
        .toPromise()
        .then(articles => articles.filter(article => article.id === id)[0]);
  }
}

关于angular - .filter 不是 Angular2 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35891671/

相关文章:

angular - 无法解析 'rxjs-compat/observable/combineLatest'

json - 直接访问 JSON 对象属性并记录它

javascript - 合并来自多个 rxjs observables 的结果

typescript 装饰器作为混合?

angular - 使用没有名称属性的 Angular ngmodel

javascript - 搜索后调查列表不可读

Angular 6 嵌套响应式(Reactive)表单组件

javascript - 如何避免 Angular 服务中的重复方法

angular - 如何创建一个通用的 Angular ng2-charts(条形图)组件,可以从具有不同参数的不同组件调用

Angular 按键存储空间而不是第一个字母