管道 Angular 2 动态数组长度

Pipes Angular 2 dynamic Array Length

是否可以使用管道动态显示数组的长度?这是我的代码:

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

@Pipe({
  name: 'lengthOfArray'
})
export class LengthOfArrayPipe implements PipeTransform {

  transform(value: any): number {
    return value.length;
  }

}

我是这样使用的:

组件

listOfIdToExport: any[] = [];

模板

Element numer: {{ listOfIdToExport | lengthOfArray }}

我有一个函数可以从这个数组中添加或删除元素,问题是管道在发生更改时不会更新数组长度。

当您从数组中添加或删除项目时,值不会更新,因为您的管道是纯净的。来自 Angular 文档:

Angular executes a pure pipe only when it detects a pure change to the input value. A pure change is either a change to a primitive input value (String, Number, Boolean, Symbol) or a changed object reference (Date, Array, Function, Object).

所以,你不改变对象引用,你只更新你的数组,因此,解决方案是让你的管道不纯,这将导致它在每个变化检测周期更新值:

@Pipe({
  name: 'lengthOfArray',
  pure: false
})

export class LengthOfArrayPipe implements PipeTransform {

    transform(value: any): number {
        return value.length;
    }

}

您可以阅读更多关于管道的内容here

更好的解决方案是更改向 listOfIdToExport 数组添加和删除元素的方式。您可以更改对数组的引用,以便 angular 更改检测工作而不是使管道不纯。