====== Ionic4とFirestoreでCRUD ======
以下のページを写経してみたい。
https://devdactic.com/ionic-4-firebase-angularfire/
{{:z_blog:2018:pasted:20181019-231027.png}}
===== 開発環境 =====
Windows 8.1 Pro
VisualStudioCode
git version 2.16.1.windows.4
Node v8.12.0
npm 6.4.1
Ionic (Ionic CLI) 4.2.0
Ionic Framework @ionic/angular 4.0.0-beta.13
===== Ionic4アプリの作成 =====
C:/ionic4/ フォルダを、VisualStudioCodeで開き、Ctrl+@でコマンドプロンプトを開き、以下を入力
ionic start ionic4-firestore-crud blank --type=angular
//何か聞かれたら、2回とも、N + Enter
{{:z_blog:2018:pasted:20181019-232551.png}}
VisualStudioCodeを閉じて、C:/ionic4/ionic4-firestore-crud/ フォルダを、VisualStudioCodeで開き、Ctrl+@でコマンドプロンプトを開き、以下を入力
ionic serve
{{:z_blog:2018:pasted:20181019-234505.png}}
===== firebase, angularfire2のインストールとtodoDetails page、todo serviceの作成 =====
npm install firebase angularfire2 --save
ionic g page pages/todoDetails
ionic g service services/todo
{{:z_blog:2018:pasted:20181020-000151.png}}
{{:z_blog:2018:pasted:20181020-000540.png}}
src/app/app-routing.module.ts を編集し、`details/:id` で、各detailページへ行けるように設定する。
(変更前)
{{:z_blog:2018:pasted:20181020-004718.png}}
(変更後)
{{:z_blog:2018:pasted:20181020-004924.png}}
===== firebaseのionicアプリへの設定 =====
http://twosquirrel.mints.ne.jp/?p=26596
のように、firebaseアプリを新規作成し、Firebaseの設定を、src/environments/environment.ts にコピペする。
{{:z_blog:2018:pasted:20181020-002240.png}}
src/environments/environment.ts
(変更前)
{{:z_blog:2018:pasted:20181020-001507.png}}
(変更後)
{{:z_blog:2018:pasted:20181020-002557.png}}
src/app/app.module.ts
(変更前)
{{:z_blog:2018:pasted:20181020-002838.png}}
(変更後)
{{:z_blog:2018:pasted:20181020-004520.png}}
import文が、2017年以前と変更になっているので注意。
import { AngularFireModule } from '@angular/fire';
import { AngularFirestoreModule } from '@angular/fire/firestore';
参考:https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md
なお、firebaseのセキュリティールールは、一時的に、以下のように、''allow read, write;'' としておく。
(後で、必ず戻しておく。)
{{:z_blog:2018:pasted:20181020-005403.png}}
ここまでのソースコード
https://github.com/adash333/ionic4-firestore-crud/commit/57ac9aa0fa371f050ba922f7cda63e222b4f6fb6
===== todo serviceの設定 =====
FirestoreにCRUDするためのコードを記載する。
src/app/services/todo.service.ts
(変更前)
{{:z_blog:2018:pasted:20181021-024120.png}}
(変更後)
{{:z_blog:2018:pasted:20181021-033610.png}}
{{:z_blog:2018:pasted:20181021-033626.png}}
import文が2018年から少し変更になっている。
import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
参考:https://github.com/angular/angularfire2/blob/master/docs/firestore/collections.md
{{:z_blog:2018:pasted:20181021-033813.png}}
===== home.page.tsの変更 =====
src/app/home/home.page.ts
(変更前)
{{:z_blog:2018:pasted:20181021-203805.png}}
(変更後)
{{:z_blog:2018:pasted:20181021-205142.png}}
src/app/home/home.page.html
(変更前)
{{:z_blog:2018:pasted:20181021-212453.png}}
app/home/home.page.scss
{{:z_blog:2018:pasted:20181021-212952.png}}
===== todo-details.page.tsの変更 =====
src/app/pages/todo-details/todo-details.page.ts
(変更後)
{{:z_blog:2018:pasted:20181021-220931.png}}
src/app/pages/todo-details/todo-details.page.html
(変更前)
{{:z_blog:2018:pasted:20181021-221016.png}}
(変更後)
{{:z_blog:2018:pasted:20181021-221925.png}}
後日、ionic serveし直したら、以下のようなエラーになってしまった。
{{:z_blog:2018:pasted:20181022-225957.png}}
写経したつもりであったのだが、とりあえず、ルーティングの記載方法を変更してみる。
(変更後)
{{:z_blog:2018:pasted:20181022-233555.png}}
参考:[[ionic4:ionic4でルーティング|Ionic4でルーティング]]
// Ionic4でのルーティングの記載方法
import { Router } from '@angular/router';
(省略)
constructor(private router: Router) {}
(省略)
this.router.navigateByUrl('/home');
===== Netlifyにデプロイ =====
npm run build --prod
www/
自分のスマホで確認。
使用方法がよく分からないアプリだが、とりあえず、タスクを作成し、編集し、削除(スライドさせるのだが、なんかうまくいかない)は、なんとかできるようになったのか。。。
{{:z_blog:2018:pasted:20181023-001916.png}}
createdAtが表示されないので、変だなと思っていたら、home.page.htmlにタイプミスがあった。
訂正して、日付の記載方法も少し変更すると、以下のような表示になった。
{{:z_blog:2018:pasted:20181023-002930.png}}
===== ソースコード =====
https://github.com/adash333/ionic4-firestore-crud
===== 写経元サイト =====
https://devdactic.com/ionic-4-firebase-angularfire/