이전
포스팅에서 사용자 로그인 및 등록 페이지를 구현하고 Firebase console에서 등록한 사용자에 대한 기록을 확인
하였습니다. 이번 포스팅에서는 등록되어 있는 사용자리스트를 출력하는 사용자 리스트 페이지를 구현해보도록 하겠습니다.
사용자 리스트 출력 기능 구현
프로젝트를 생성하면 기본적으로 추가되어 있는 list폴더에서 기능구현을 진행하도록 합니다. 사용자가 등록하는 시점에서 사용자 Email과 Uid 값을 Database에 저장하여 출력하는 과정입니다. 기존에 설치했던 angulrFire2 모듈에 포함되어 있는 AngularFireDatabase, FirebaseListObservable 기반으로 로직을 구현하게 됩니다.
(1) list 페이지 구현
src/pages/list/list.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <ion-header> <ion-navbar> <button ion-button menuToggle> <ion-icon name="menu"></ion-icon> </button> <ion-title>User List</ion-title> </ion-navbar> </ion-header> <ion-content> <ion-list> <button ion-item *ngFor="let item of items | async"> <ion-row> <ion-col> {{item.email}} </ion-col> <ion-col> {{item.uid}} </ion-col> </ion-row> </button> </ion-list> </ion-content> | cs |
src/pages/list/list.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import { Component } from '@angular/core'; import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database'; @Component({ selector: 'page-list', templateUrl: 'list.html' }) export class ListPage { selectedItem: any; icons: string[]; items: FirebaseListObservable<any>; constructor(private afDB: AngularFireDatabase) { this.items = afDB.list('/users'); } } | cs |
(2) resister 페이지에서 로직 추가
src/pages/resister/resister.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <ion-header> <ion-navbar> <ion-title>Register</ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-item> <ion-label floating>Email Address</ion-label> <ion-input type="text" [(ngModel)]="user.email"></ion-input> </ion-item> <ion-item> <ion-label floating>Password</ion-label> <ion-input type="password" [(ngModel)]="user.password"></ion-input> </ion-item> <button ion-button color="primary" (click)="signup();">Register</button> <button ion-button full clear color="light" (click)="goBack()">Go Back</button> </ion-content> | cs |
src/pages/resister/resister.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import { Component } from '@angular/core'; import { NavController, LoadingController } from 'ionic-angular'; import { AngularFireAuth } from 'angularfire2/auth'; import { LoginPage } from '../login/login'; import { ProfilePage } from '../profile/profile'; import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database'; import { AuthProvider } from '../../providers/auth/auth'; import { User } from '../models/user'; @Component({ selector: 'page-register', templateUrl: 'register.html', }) export class RegisterPage { user: any = {} as User; items: FirebaseListObservable<any>; constructor(public navCtrl: NavController, private loadingCtrl: LoadingController, private authService: AuthProvider, private afDB: AngularFireDatabase) { // Firebase database this.items = this.afDB.list('/users'); } async signup() { let loading = this.loadingCtrl.create({ content: 'Loading...' }); loading.present(); try { await this.authService.addUser(this.user).then( (user: any) => { console.log(user); //DB insert this.items.push( { email: user.email, uid: user.uid } ); this.navCtrl.setRoot(ProfilePage); loading.dismiss(); }, (error) => { loading.dismiss(); let errortoast = this.loadingCtrl.create({ content: 'Register Error!', duration: 2000 }); errortoast.present(); }); } catch (err) { console.error(err); loading.dismiss(); } } goBack() { this.navCtrl.setRoot(LoginPage); } ionViewDidLoad() { console.log('ionViewDidLoad RegisterPage'); } } | cs |
사용자 리스트 출력 확인
$ ionic serve -lab
'Ionic 3' 카테고리의 다른 글
[6] Ionic Camera 기능 구현 (1) | 2018.09.23 |
---|---|
[4] Ionic & Firebase 로그인 기능 구현 (0) | 2018.09.23 |
[3] VS code에 Ionic 디버깅 환경 구성 (0) | 2018.09.23 |
[2] ionic 3 Ionic 3 & Firebase 연동 (0) | 2018.09.23 |
[1] Ionic 3 프로젝트 생성 및 실행 (0) | 2018.09.23 |