Angular - 添加数据后数组未排序

贾雷思

我有一个名为 JobList 的组件,它当前从文件(稍后将成为 Web 服务器)获取 JSON 对象并在页面上显示作业列表。我希望列表按每个作业中名为 Status.Order 的属性进行排序。

为此,我使用了一个管道,我在下面的代码中设置了它。

问题:如果我不使用管道,作业将按文件顺序显示,但如果我使用管道,则根本不显示任何内容。我在管道代码中做错了什么吗?

如果我在管道代码中的转换函数中添加一个 console.log ,那么我可以看到正在传入一个空数组。我希望在添加数据时看到第二次调用,但什么也没得到。

export class JoblistComponent implements OnInit {

  private openJobs = new Array();
  private activeJobs = new Array();

  constructor() { }

  ngOnInit() {

    const openJobs = this.openJobs;
    const activeJobs = this.openJobs;

    $.getJSON('assets/data/jobs.json', function (json: Array<any>) {

      for (const job of json) {
        if (job.Status.Section === 'Active') {
          activeJobs.push(job);
        } else {
          openJobs.push(job);
        }
      }
    });
  }
}

为了呈现我正在使用此 HTML 的内容。

 <div class="job" *ngFor="let job of openJobs | orderByStatus" [ngStyle]="{ 'border-left-color': job.Group.Colour }">
        <span class="title">12 Example Street, {{job.Location.Name}}</span>
        <span>{{ job.Name }}</span>
        <span>{{ job.Type.Name }}</span>
      </div>

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'orderByStatus'
})
export class OrderByStatusPipe implements PipeTransform {

  transform(array: Array<any>, args?: any): any {

    array.sort((a: any, b: any) => {
      if (a.Status.Order < b.Status.Order) {
        return -1;
      } else if (a.Status.Order > b.Status.Order) {
        return 1;
      } else {
        return 0;
      }
    });

    return array;
  }

}

示例工作

{
        "_id": "597b5a700c1d413f20c4d67a",
        "Name": "JOB-20170628-029",
        "Created": "2017-07-28T15:38:24.619Z",
        "Group": {
            "_id": "5919e2f96b1822dc0daf94d5",
            "Name": "Priority 3",
            "Colour": "#1bb934",
            "Order": 3,
            "Class": "priority3"
        },
        "Type": {
            "Name": "Type 2",
            "_id": "597b5a680c1d413f20c4b5fc"
        },
        "Status": {
            "Order": 2,
            "Section": "Active"
        }
        "Description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sed lacus sit amet enim congue molestie. \nAenean pharetra tincidunt ligula a luctus. In vel interdum lacus. Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        "Location": {
            "Postcode": "RG31 6PL",
            "Name": "RG31 6PL"
        }
    }

斯沃克斯

您尝试访问模板中的异步调用。如果加载速度很快,则根本不会加载对象。

在您的 html 中,您尝试:

    <span class="title">12 Example Street, {{job.Location.Name}}</span>
    <span>{{ job.Name }}</span>
    <span>{{ job.Type.Name }}</span>

相反,它应该{{job?.Location?.Name}} {{job?.Name}}在 Angular2 或{{job.Location.Name | async}}Angular4 中

去休息了

更新

尝试:

如果不工作放console.log(a)console.log(b)

if (a.Status.Order < b.Status.Order) {
        return -1;
      } 
if (a.Status.Order > b.Status.Order) {
        return 1;
      } 
        return 0;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在angular js中向对象添加数组属性

来自分类Dev

在对象 Angular 2 内添加数组

来自分类Dev

如何在Angular 2中的对象内添加数组?

来自分类Dev

Angular 向 td 元素添加数据标签属性

来自分类Dev

angular:排序数据表后丢失数据

来自分类Dev

Angular:数组排序

来自分类Dev

在Angular JS中添加数字

来自分类Dev

在Angular指令模板中有条件地添加数据属性

来自分类Dev

如何通过Angular中的JSON响应在formArray中添加数据?

来自分类Dev

Angular指令不追加数据

来自分类Dev

angular2中数组中的数据排序

来自分类Dev

动态Angular表未排序

来自分类Dev

数据从 observable 返回后,Angular View 未更新

来自分类Dev

在订阅方法中成功添加到数据库后,Angular 6 和 Angular 材质对话框未打开

来自分类Dev

不可变列表未添加数据

来自分类Dev

添加数据后RecyclerView不更新

来自分类Dev

Angular试图将范围数据添加到数组

来自分类Dev

Google Chart从数组添加数据

来自分类Dev

Javascript在多维数组中添加数据

来自分类Dev

添加数组数据库列

来自分类Dev

在关联数组中添加数据

来自分类Dev

Javascript在多维数组中添加数据

来自分类Dev

在对象数组中添加数据

来自分类Dev

数据未渲染,Angular JS

来自分类Dev

HTML未填充Angular数据

来自分类Dev

服务数据未更新Angular

来自分类Dev

排序后未排序Spark数据帧

来自分类Dev

在jtable中添加列后添加数据

来自分类Dev

添加数据后如何保存数据集?