json - 按值过滤对象的angular2 typescript 数组

标签 json angular typescript

我有一个从 JSON 文件获取数据的数组。我能够将对象数组存储到我的 Task[] 中。现在我想按状态(“已提交”或“已解决”等)检索数据。我尝试了很多方法,但无法实现。请帮助我。

data: [{
  taskname: 'Test1',
  taskId: '1',
  status: 'Submitted'
}, {
  taskname: 'Test2',
  taskId: '2',
  status: 'Resolved'
}, {
  taskname: 'Test3',
  taskId: '4',
  status: 'Submitted'
}, {
  taskname: 'Test4',
  taskId: '5',
  status: 'In Progress'
}, {
  taskname: 'Test5',
  taskId: '6',
  status: 'Resolved'
}, {
  taskname: 'Test6',
  taskId: '7',
  status: 'Submitted'
}
}]

任务.ts

export interface Task {
  taskId: any;
  taskname: any;
  status: any;
}

任务服务.ts

getTask() {
  return this.http.get('../app/common/task.json')
    .toPromise()
    .then(res => < Task[] > res.json().data)
    .then(data => {
      return data;
    });

}

任务组件.ts

export class TaskComponent implements OnInit {
  taskList: Task[];
  datasource: Task[];
  sortedList: Task[];
  ngOnInit() {
    this.taskService.getTask().then(files => this.files = files);
    this.vecService.getData().then(taskList => {
      this.datasource = taskList;
      this.taskList = this.datasource; // Storing data into my task list array
    });
  }
}

这是我尝试按状态过滤的内容:

 this.sortedList = this.taskList.filter(
      task => task.status ==='Submitted');

显示以下错误:

Cannot read property 'filter' of undefined

最佳答案

这是因为 promises/HTTP 请求是异步的。您需要在 promises 的回调中添加过滤器,如果将其放在 taskList 之外,则将未定义,因此无法应用过滤器

this.vecService.getData().then(taskList => {
        this.datasource = taskList;
        this.taskList = this.datasource;// Storing data into my task list array
        this.sortedList = this.taskList.filter(
        task => task.status ==='Submitted');

    });

关于json - 按值过滤对象的angular2 typescript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43337893/

相关文章:

javascript - 为什么 JSON API 规范建议使用连字符/减号来分隔成员名称中的单词?

python - 如何在Python中解析JSON数据键和值?

javascript - 如何重新加载当前页面?

php - 如何将 WordPress 与 Angular 8 集成到网站上?

Angular 依赖注入(inject)

Angular 6 - 使用 ng-content 时样式不起作用

json - 使用dart在SharedPreference中存储对象或 map 列表

javascript - 相同的 jQuery 代码在本地和在线服务器上写入不同的 JSON 数据

error-handling - 使用 Angular2 异步管道进行错误处理

javascript - 如何从 typescript 中的对象键字符串中提取确切的联合类型?