Angular 角管,用于移除双套管

Angular 角管,用于移除双套管,angular,pipe,Angular,Pipe,我有一个下拉菜单,列出了客户的所有国家/地区代码。目前我的问题是,我有很多重复条目,也就是说,如果我有三个来自印度的客户,我的下拉列表将显示在中,而不是一次。我原以为我可以用一根管子来解决这个问题,但我不知道如何实现它 下面是我的管道(它是空的,因为我无法理解代码): 从'@angular/core'导入{Pipe,PipeTransform}; @烟斗({ 名称:'重复' }) 导出类DuplicatesPipe实现了PipeTransform{ 转换(值:any,args?:any):an

我有一个下拉菜单,列出了客户的所有国家/地区代码。目前我的问题是,我有很多重复条目,也就是说,如果我有三个来自印度的客户,我的下拉列表将显示在中,而不是一次。我原以为我可以用一根管子来解决这个问题,但我不知道如何实现它

下面是我的管道(它是空的,因为我无法理解代码):

从'@angular/core'导入{Pipe,PipeTransform};
@烟斗({
名称:'重复'
})
导出类DuplicatesPipe实现了PipeTransform{
转换(值:any,args?:any):any{
返回值;
}

}
此处不需要管道,您只需在绑定之前从customerArray本身删除重复项即可

let filteredCustomerArray = [];
this.customerArray.filter(cust=>filteredCustomerArray.indexOf(cust.countryCode) === -1 &&
filteredCustomerArray.push(cust.countryCode));

现在对该数组执行ngFor。

必须将管道应用于正在迭代的数组

e、 g.类似这样的情况:

@Pipe({name:“uniqueCountryCodes”})
导出类UniqueCountryCodesPipe实现PipeTransform{
转换(客户:客户[],参数?:任何):任何{
return customers.map(c=>c.countryCode).filter((code,currentIndex,allCodes)=>allCodes.indexOf(code)==currentIndex);
}
}
用法:

<option *ngFor="let code of (customerArray | uniqueCountryCodes)">{{ code }}</option>
{{code}
请记住,只要管道不存在,它只会过滤一次,并且在将新客户添加到customerArray时不会更新countrycodes