Angularで一覧表示を実装する方法|Webアプリ開発実践ノート Day08 | SORAXIOMラボ

Day08:データを一覧表示する(簡易CRUD完成)

スポンサーリンク
Webアプリ開発実践ノート

はじめに

Day07では、POSTでデータを送信できるようになった。

今回はそのデータを
一覧で表示できる状態 にする。

ここまでできれば、

  • 登録(Create)
  • 取得(Read)

がそろう。

業務アプリの基本形が完成する。


① Node.js側:データを保持する

今回は学習用なので、
メモリ上に配列で保持する。

Service修正

// src/services/userService.tsexport type User = {
id: number;
name: string;
};let users: User[] = [];
let currentId = 1;export function createUser(name: string): User {
const newUser: User = {
id: currentId++,
name
}; users.push(newUser);
return newUser;
}export function getUsers(): User[] {
return users;
}

Controller追加

// src/controllers/userController.tsimport { Request, Response } from "express";
import { createUser, getUsers } from "../services/userService";export function createUserController(req: Request, res: Response) {
const { name } = req.body; const user = createUser(name); res.json(user);
}export function getUsersController(req: Request, res: Response) {
const userList = getUsers();
res.json(userList);
}

index.tsに追加

app.get("/users", getUsersController);

② Angular側:一覧取得

Service修正

export interface User {
id: number;
name: string;
}getUsers() {
return this.http.get<User[]>(
'http://localhost:3000/users'
);
}

Component修正

users: User[] = [];loadUsers() {
this.userService.getUsers()
.subscribe(data => {
this.users = data;
});
}submit() {
this.userService.createUser({ name: this.name })
.subscribe(() => {
this.name = '';
this.loadUsers();
});
}

HTML修正

<input [(ngModel)]="name" placeholder="名前を入力">
<button (click)="submit()">登録</button><button (click)="loadUsers()">一覧取得</button><ul>
<li *ngFor="let user of users">
{{ user.id }} - {{ user.name }}
</li>
</ul>

ここで起きていること

流れはこう。

登録

POST /users

メモリ配列に保存

GET /users

一覧表示

これで
Create + Read 完成


なぜ今DBを使わないのか

理由はシンプル。

  • まず構造を理解する
  • HTTPの流れを掴む
  • 役割分離を体に入れる

DBはその後でいい。


今できていること

  • AngularとNode.jsが双方向通信
  • POSTで登録
  • GETで一覧
  • 型でデータ構造共有

これはもう立派なWebアプリ。


Day08のまとめ

  • データをメモリに保持
  • GET /usersで一覧取得
  • Angularで*ngFor表示
  • CRUDのCとR完成

次の選択肢

ここから分岐できる。

① Update / Deleteまでやる
② バリデーションをちゃんと入れる
③ DB(SQLite)導入する
④ ここで一度まとめ記事を書く

まめさんの流れ的には
👉 このままCRUD完成(Update / Delete) が自然。


次回予告

Day09:UpdateとDeleteを実装する(CRUD完成)

コメント

Copied title and URL