リンクの配列があり、各要素は、リンク、説明、カテゴリなど、いくつかの文字列を含むオブジェクトです。リンクを表示するさまざまなコンポーネントがあり、各コンポーネントでそのカテゴリのリンクのみを表示したいと思います。そのため、カテゴリで配列をフィルタリングしたいと思います。
すべてのリンクを含むモックアップ配列があります。
パイプなしでオブジェクトの配列をフィルタリングしようとしています。理由: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();
次に、関連するリンクのみを含む新しい配列を作成しようとします。フィルタはカテゴリ別です。しかし、カテゴリが一致する要素をプッシュして新しい配列を作成しようとすると、エラーが発生します。
プロパティ「push」はタイプ「DCHlinks」に存在しません。
DCHlinksはオブジェクトです-これはクラスです:
export class DCHlinks {
dchLink: string;
dchLinkTitle: string;
dchLinkDescription: string;
dchCategory: string;
}
この単純なフィルターを実行する方法はありますか?(そしてパイプなし-上記の理由を参照してください..)
ありがとう!
のようにアレイを初期化する必要があります startupsLinks
links: DCHlinks[] = [];
または、array.filterを使用して関連データを取得することもできます
this.startupsLinks = this.links.filter(t=>t.dchCategory == 'startups');
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加