Angular 4.如何根据排序将项添加到数组中

时间:2017-12-06 22:01:16

标签: angular typescript

我在项目中使用Angular 4.4.6。有一个事件列表,我希望这个列表按日期排序。我通过添加ng2-order-pipe

来实现这一目标
// customers.html

<tr *ngFor="let event of customer.events | orderBy: order : reverse">

排序有效但我的问题是如果我添加一个事件,它会被放在列表的末尾,忽略排序。

// customers.ts

this.order               = 'date';
this.reverse             = true;

.........................................

addEvent(new_date, new_state, new_description) {

    var new_event = {
        date:        new_date,
        state:       new_state,
        description: new_description,
        customer_id: this.customer['id']
    };
this.customer['events'].push(new_event);
}

如何添加事件以使其根据排序显示在其位置?

1 个答案:

答案 0 :(得分:3)

来自:https://angular.io/guide/pipes#pure-and-impure-pipes

  

Angular忽略(复合)对象内的更改。如果更改输入月份,添加到输入数组或更新输入对象属性,它将不会调用纯管道。

修复

重新分配数组,例如

this.customer['events'] = this.customer['events'].concat(new_event);