filterを使う|AngularでWebサイト作成
Angularの学習の為に、AngularでWebサイトを作ってみることにしました(Angularのバージョンは4.3.6です)。
適宜作業内容をまとめていきます。
基本的な部分は公式チュートリアルなどを参考にしながら進めています。
AngularでWebサイトを作成していく場合、一覧表示を行った際にfilter機能を使うことができます(簡単な絞り込みに使えます)。
今回は、このfilterの簡単な例を作成してみたいと思います。
開発環境
・OS:Windows8.1 64bit
・node:v7.2.1
・npm:4.0.5
・Angular:4.3.6
・開発ツール:VisualStudioCode
手順
手順1.一覧表示テンプレートの作成
メンバー一覧画面(memberlistコンポーネント)を想定して考えます。
まずはmemberlistコンポーネントを以下のように作成します。
memberlist.component.html
1 2 3 4 5 6 7 8 9 10 | < table id = "contents" class = "table" > < tr > < th >ID</ th > < th >メンバ名</ th > </ tr > < tr * ngFor = "let member of Members" > < td >{{member.id}}</ td > < td >< a [routerLink]="['/member', member.id]">{{member.name}}</ a ></ td > </ tr > </ table > |
member.ts
1 2 3 4 | export class Member { id:number name:string } |
memberlist.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | export class MemberListComponent implements OnInit { members: Member[] ~省略~ ngOnInit() { this .getMembers() } getMembers(): void { this .memberService.getMembers() .then((members: Member[]) => { this .members = members }); } ~省略~ } |
member.service.ts
1 2 3 4 5 6 7 8 9 10 | @Injectable() export class MemberService { ~省略~ getMembers(): Promise<Member[]> { return this .http.get( this .membersUrl).toPromise() .then((response: Response) => response.json().data as Member[]) . catch (); } ~省略~ } |
※serviceのgetリクエストでAPI側からMember配列型のjsonを返すよう、API実装しておく必要があります。
手順2.filterを使う
手順1で一覧表示ができるようになったら、次にfilterを実装していきましょう。
memberlist.component.tsを以下のように変更します。
memberlist.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | export class MemberListComponent implements OnInit { members: Member[] ~省略~ ngOnInit() { this .getMembers() } getMembers(): void { this .memberService.getMembers() .then((members: Member[]) => { this .members = members.filter((_member: Member) => { //filterを使う return _member.id !== 1; //idが1以外のものを表示する。 }); } ~省略~ } |
filterで条件をつけることで、表示するmemberの条件を指定することができるようになります。
上記の例ではidが1以外のmemberが表示されるようになります。
感想
filterは簡単に実装できますが、複数条件の組み合わせなどには向いていないような気もします。
より良い方法を調べていきたいと思います。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載