ionic 4 native storage เพื่อรับค่าจาก textbox และเก็บค่าที่ได้ไว้ใช้กับหน้าอื่นๆ ในแอพ เช่นหน้า home เรามี textbox กดปุ่ม button ไปหน้า p2 แล้วค่าใน textbox สามารถไปแสดงในหน้า p2 ได้
พอพิมพ์ 3333 แล้วกดปุ่มเด้งไปหน้า p2 แล้วส่งค่า 3333 ไปแสดง
1. ionic start nativestorage blank
2. cd ./nativestorage
3. ionic cordova plugin add cordova–sqlite–storage
4. npm install —save @ionic/storage
5. เปิด visual studio แก้โค้ด app.module.ts เพิ่ม
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { StatusBar } from '@ionic-native/status-bar/ngx'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { IonicStorageModule } from '@ionic/storage'; @NgModule({ declarations: [AppComponent], entryComponents: [], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule ,IonicStorageModule.forRoot()], providers: [ StatusBar, SplashScreen, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } ], bootstrap: [AppComponent] }) export class AppModule {}
6. เปิดหน้า home.page.html
<ion-header> <ion-toolbar> <ion-title> Ionic Blank </ion-title> </ion-toolbar> </ion-header> <ion-content> <ion-input type="text" [(ngModel)]="txtInput1"></ion-input> <ion-button (click)="onClick(txtInput1)"> บันทึกค่าแล้วไปหน้า p2 </ion-button> </ion-content>
7. หน้า home.page.ts
import { Component } from '@angular/core'; import { Storage } from '@ionic/storage'; import { Router } from '@angular/router'; @Component({ selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], }) export class HomePage { constructor(private storage: Storage,private router:Router) { } //ปุ่มกดให้บันทึกค่าแล้วไปหน้า p2 onClick(txtInput1){ //เก็บค่าใน storage ที่ชื่อ input1 ก่อน โดยเอาค่า txtNumber ที่ทำการแมพ ngModel ไว้มาเก็บ this.storage.set('input1', txtInput1); //ไปหน้า p2 (หรืออาจจะไม่มีหน้านี้ก็ได้สามารถแสดงผลในหน้าไหนก็ได้) this.router.navigateByUrl('/p2'); } }
8. กลับมาที่ cmd สร้างหน้า p2 ด้วยคำสั่ง ionic generate page p2
9. เปิดหน้า p2.page.html
<ion-header> <ion-toolbar> <ion-title>p2</ion-title> </ion-toolbar> </ion-header> <ion-content> ค่าที่ส่งมา : {{txtNumber}} </ion-content>
10. หน้า p2.page.ts
import { Component, OnInit } from '@angular/core'; import { Storage } from '@ionic/storage'; @Component({ selector: 'app-p2', templateUrl: './p2.page.html', styleUrls: ['./p2.page.scss'], }) export class P2Page implements OnInit { txtNumber:string; constructor(private storage: Storage) { this.storage.get('input1').then((val) => { this.txtNumber=val; //console.log('Your age is', val); }); } ngOnInit() { } }
11. รันแอพด้วยคำสั่ง ionic cordova run android –emulator
สรุปการทำ native storage จะต้องทดลองกับเครื่อง emu หรือ device จริง และการส่งค่าผ่านตัวแปรจะทำผ่านคำสั่ง
this.storage.set(‘input1’, txtInput1); สำหรับเก็บค่าและ
this.storage.get(‘input1’).then((val) => { this.txtNumber=val;}); สำหรับแสดงค่า