Я пытаюсь реализовать трубы, используя Angular.Ниже приведен код, который я пробовал.Я хочу получить уникальный для полного списка.Поэтому я добавил имя фильтра канала для внутреннего списка.Но я все еще получаю дубликаты элементов.Я добавил json для справки. Внутренний массив ArticleTags содержит список объектов.Точно так же у меня есть несколько массивов ArticleTags для каждого родительского массива.Я хочу получить уникальные элементы из всего массива списка ArticleTags.Я думаю, что он извлекает уникальные элементы из определенного внутреннего списка, а не извлекает из всего списка тегов статьи.
![enter image description here](https://i.stack.imgur.com/q2ctn.jpg)
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filterUnique',
pure: false
})
export class FilterPipe implements PipeTransform {
transform(value: any, args?: any): any {
// Remove the duplicate elements
const uniqueArray = value.filter(function (el, index, array) {
return array.indexOf (el) === index;
});
return uniqueArray;
}
}
<ul>
<li *ngFor="let articlesResult of articlesListArray; let i=index">
<ul>
<li *ngFor="let articlesTagResult of articlesResult.ArticleTags | filterUnique; let j=index">
<i class="fa fa-times-circle" *ngIf="articlesResult.ArticleTags[j].value"></i>
<label class="form-check-label" for="exampleCheck" *ngIf="articlesResult.ArticleTags[j].value">{{articlesResult.ArticleTags[j].value}}</label>
</li>
</ul>
</li>
</ul>
getLatestArticles(currdate): void {
this.ng4LoadingSpinnerService.show();
this.ArticlesServiceCall.getArticlesDashboard(currdate)
.subscribe(
resultArray => {
this.ng4LoadingSpinnerService.hide();
this.articlesList = resultArray;
this.articlesLists = resultArray.ResponseValue;
this.articlesListArray = this.articlesLists.slice(0, 8);
},
error => console.log('Error :: ' + error)
);
}
Я получаюданные основного массива из articleListArray и их передачу в html
Редактирование обновления 9 июля 2018
Получение приведенной ниже ошибки с указанным ниже канальным кодом.
import {Pipe, PipeTransform} из '@ angular / core';
@ Pipe ({name: 'filterduplicates'}) класс экспорта FilterduplicatesPipe реализует PipeTransform {
transform(value: any, args?: any): any {
// Remove the duplicate elements
const art = value.map( x => {
return x.ArticleTags ? x.ArticleTags.map(y => {
return y.value ? y.value : null;
}) : [];
}).reduce((acc, ele, i) => {
acc = acc.concat(ele);
return acc;
}).filter( z => {
if (z) {
return z;
}
});
return new Set(art);
}
} ![enter image description here](https://i.stack.imgur.com/aVsLE.png)