【发布时间】:2018-05-09 15:18:51
【问题描述】:
我有一个链接数组,每个元素都是一个包含少量字符串的对象——一个链接、描述和类别。我有显示链接的不同组件,我希望在每个组件中只显示其类别的链接。 所以我想按类别过滤数组。
我有一个包含所有链接的模型数组。
我尝试在没有管道的情况下过滤对象数组。原因:https://angular.io/guide/pipes#appendix-no-filterpipe-or-orderbypipe
显然 Angular 团队建议在组件级别进行过滤,而不是使用管道: “Angular 团队和许多经验丰富的 Angular 开发人员强烈建议将过滤和排序逻辑移至组件本身。”
这是我的组件:
@Component({
selector: 'startups',
templateUrl: './startups.component.html'
})
export class StartupsComponent implements OnInit {
constructor(private appLinksService: DigitalCoinHubService) { }
title = 'Startups';
links: DCHlinks[]; // create a new array in type of DCHlinks to get the data
startupsLinks: DCHlinks [] = []; // will build the startsups links only
getLinks(): void {
this.links = this.appLinksService.getLinks(); // gets the array with the data from the service
for (let i in this.links)
{
if (this.links[i].dchCategory == 'startups' )
{
this.startupsLinks[i].push(this.links[i]);
}
}
}
ngOnInit() {
this.getLinks();
}
}
首先我从服务中获取大数组:
this.links = this.appLinksService.getLinks();
然后我尝试构建一个仅包含相关链接的新数组。过滤器是按类别。但是当我尝试通过推送其类别匹配的元素来构建新数组时 - 它给了我错误:
“DCHlinks”类型上不存在“push”属性。
DCHlinks 是对象 - 这是类:
export class DCHlinks {
dchLink: string;
dchLinkTitle: string;
dchLinkDescription: string;
dchCategory: string;
}
知道如何做这个简单的过滤器吗? (并且没有管道 - 请参阅上面的原因..)
谢谢!
【问题讨论】:
标签: arrays angular typescript object