Guia5 Firebase Ionic
Guia5 Firebase Ionic
Electiva V
Docente: Ernesto Verdugo
Contenido
Introducción .......................................................................................................................................2
Crear cuenta firebase .........................................................................................................................2
Credenciales de firebase ............................................................................................................4
Base de datos firebase ...............................................................................................................5
crear proyecto ....................................................................................................................................6
Instalar plugin para conexión con firebase .................................................................................6
Iniciamos la funcionalidad ..................................................................................................................8
Clase Contacto................................................................................................................................8
Crear página lista de contactos ......................................................................................................8
crear página de nuevocontacto ........................................................................................................10
Navegar de la lista al formulario nuevo ....................................................................................10
Crear formulario .......................................................................................................................11
Conectar y guardar datos en firebase (Crear service) ..............................................................13
Listar contactos ........................................................................................................................15
Agregar acciones a contactos ...........................................................................................................19
Borrar registros ................................................................................................................................21
Editar contacto .................................................................................................................................22
Agregar ruta de editar al path ..................................................................................................23
Redireccionar desde hoja de acción .........................................................................................23
Agregar método getContactoById y editar en el service ..........................................................24
Formulario de editar ................................................................................................................26
Método editar() ........................................................................................................................27
Referencias.......................................................................................................................................29
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Introducción
Para esta ocasión vamos a retomar la misma funcionalidad de las guias anteriores y vamos a crear
una agenda de contactos, pero crearemos una base de datos externa usando firebase .
https://console.firebase.google.com/
Credenciales de firebase
Una vez creado el proyecto firebase podemos ver/copiar las credenciales de conexión que
usaremos mas adelante.
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Para este ejemplo usaremos cloud firestore: Almacena y sincroniza datos con una base de
datos NoSQL alojada en la nube. Los datos se sincronizan con todos los clientes en
tiempo real y se mantienen disponibles cuando tu app está sin conexión.,
1
https://firebase.google.com/docs/firestore/rtdb-vs-firestore
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Nota: para un sistema de producción no se recomienda que estas opciones estén si seguridad pero
para este ejercicio esta bien.
crear proyecto
Una vez tenemos la cuenta de firebase vamos a proceder a crear nuestro proyecto, como en los
ejemplos anteriores usaremos la plantilla tabs
Una vez instaladas las librerías debemos agregar las credenciales de nuestro proyecto firebase
(pagina 3) en el archivo src/environments/environment.ts. este archivo fue creado
automáticamente al cargar las librerias
Pantallazo 1 src/environments/environment.ts.
Y vamos a crear la llave de firebase con la información que copiamos de la consola de firebase.
Nota: estas credenciales los debe buscar en la consola del proyecto firebase.
Ahora debemos informarle al AngularFire cuales son las credenciales de conexión con firebase y lo
hacemos en el archivo app/app.module.ts.
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Iniciamos la funcionalidad
Clase Contacto
Lo primero que vamos a hacer es crear un componente con la clase contacto, la cual nos va a
definir los elementos/propiedades que esperamos que tenga un contacto, datos que están
definidos en el alcance de esta guía.
Debido a que esta clase es un elemento común que puede ser usado por diferentes componentes
de nuestra aplicación lo vamos a crear en la carpeta app, creamos el archivo contacto.ts.
Abrimos el árbol del proyecto y podemos ver que se creó una nueva carpeta llamada contactos
Ahora vamos a cambiar el sistema de navegación para que se ajuste a nuestra aplicación, abrimos
el archivo tabs/tabs.page.html
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Observen que se cambió los títulos de la tercera pestaña <ion-label> para que aparezca en español
y cambiamos el icono2 (<ion-icon name> línea 15).
Al ver la aplicación en el navegador podemos ver que esta sigue funcionando sin ningún problema.
Nota: recuerde que debemos agregar la nueva ruta al sistema de navegación en el archivo
tabs-routing.module.ts.(ver ejemplo más arriba) (esta parte no estará en la guía ya que se supone
que deben saber como hacerlo)
Pantallazo 3 contactos.page.html
Botón flotante
2
Ionic dispone de una gran fuente de iconos para usar en nuestras aplicaciones, ver
https://ionicframework.com/docs/ionicons/
3
http://ionicframework.com/docs/components/#fabs
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Crear formulario
Debemos declarar el objeto que estará enlazado con los elementos del formulario, este objeto
debe ser del tipo Contacto. (nuevocontacto.page.ts) (líneas 5 y 15)
Pantallazo 4 nuevocontacto.page.ts
Ahora vamos a crear el formulario en el nuevo componente, podemos copiar el formulario de las
guías anteriores y realizar los ajustes que aparecen en la siguiente imagen.
(nuevocontacto.page.html)
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Pantallazo 5 nuevocontacto.page.html
https://ionicframework.com/docs/api/select
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Vamos a crear los métodos correspondientes para añadir un nuevo contacto a la lista, para esto
usamos la función addDoc de firebase para añadir un nuevo registro(documento) a la collection.
services/contactos.service.ts
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Ahora que tenemos el formulario y el servicio con las funciones de database de firebase y creamos
el método para crear el nuevo registro en la base de datos.
Pantallazo 6 nuevocontacto.page.ts
Debemos importar el servicio para que el componente pueda acceder a los métodos que vamos a
ir creando, y debemos agregar el servicio en el constructor del componente. (líneas 6 y 22).
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Pantallazo 7 nuevocontacto.page.ts
Nota: Guardamos y probamos en el navegador, debe aparecer un mensaje indicando que guardo
correctamente.
Si abrimos la base de datos de firebase podemos ver que se registró el nuevo contacto a una lista
llamada “contactos”
Listar contactos
Ahora que hemos alimentado la lista en firebase vamos a realizar la consulta a la base de datos y
mostrar los registros en una lista.
Pantallazo 8 contacto.service.ts
Y ahora debemos importar los elementos del servicio. Observe los comentarios en cada línea del
código. (contactos.page.ts).
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Pantallazo 9 contactos.page.ts
Y en el mismo archivo agregamos el método para consultarla lista de contactos de la base de datos
mediante el servicio.
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Ya solo falta agregar la lista en la vista para poder visualizar cada registro. (contactos.page.html)
Pantallazo 10 contactos.page.html
Nota: Probamos en el navegador y debemos poder visualizar los registros que tenemos en la base
de datos de firebase.
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Para esto debemos agregar el controlador de hojas de acción (ActionSheetController) que viene
con ionic-angular, y también importamos el controlador de alertas (AlertController), abrimos el
archivo contactos.page.ts,
Pantallazo 11 contactos.page.ts
Pantallazo 12 contactos.page.ts
Nota: estas ya deben estar en el archivo de las imagenes anteriores de esta guía
4
http://ionicframework.com/docs/components/#action-sheets
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Y creamos el método selectContacto, que permitirá abrir una hoja de acciones al hacer clic en
cualquier registro de la lista.
Pantallazo 13 contactos.page.ts
Para terminar de crear la lista debemos agregar un manejador del evento click en cada item de la
lista, abrimos el archivo contactos.page.html,
Pantallazo 14 contactos.page.html
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Probamos en el navegador y podemos ver que al hacer clic sobre alguno de los registros de la lista
se despliega una hoja de acciones.
Borrar registros
Ahora que tenemos la lista de acciones vamos a crear el método para eliminar o borrar un
registro.
Lo primero es crear el método en el servicio para que elimine los registros de firebase; abrimos el
archivo contactos.service.ts y agregamos el siguiente método
services/contactos.service.ts
Ahora abrimos contactos.page.ts para modificar el método borrar() para que invoque
borrarContacto().
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Probamos el ejercicio en el navegador podemos ver que nos pide que confirmemos si deseamos
eliminar el contacto de la lista.
Editar contacto
Para finalizar todo el ejercicio vamos a agregar la funcionalidad de editar un contacto.
Primero vamos a generar una nueva página/componente para editar. Debemos ejecutar el
comando:
tabs-routing.module.ts
Observe que esta nueva ruta esta acompañada de un parámetro (:id), es decir que debemos
preparar el componente para recibir un parámetro de entrada.
contactos.page.ts
Debemos colocar el metodo editar() (líneas 110-112) inmediatamente debajo del método
mostrarMensaje().
Ahora en el método selectContacto() vamos a modificar la acción del botón editar. (línea 62)
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
contactos.page.ts
contactos.service.ts
editarcontacto.page.ts
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
editarcontacto.page.ts
Formulario de editar
Vamos a crear el formulario de editar en el template editarcontacto.page.html. podemos copiar y
pegar el formulario de nuevocontacto.html y hacer los ajustes correspondientes.
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
editarcontacto.page.html
Nota: Podemos probar el ejercicio en el navegador y vemos que al cargar el formulario este viene
con los datos del contacto seleccionado.
Método editar()
Para completar el ejercicio debemos crear el método editar que se encargará de realizar el
llamado al servicio que guarda los cambios en la base de datos.
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
editarcontacto.page.ts
GUIA 5 : FIREBASE - IONIC
Electiva V
Docente: Ernesto Verdugo
Referencias
https://medium.com/@0ka/angular-firebase-create-and-read-e1fa37494f30
https://firebase.google.com/codelabs/firestore-web?hl=es-419#0
https://github.com/firebase/quickstart-js/tree/master/firestore
https://github.com/angular/angularfire/blob/master/docs/compat/firestore/collections.md
https://firebase.google.com/docs/reference/js?hl=es-419
https://devdactic.com/ionic-4-firebase-angularfire-2/
https://www.youtube.com/watch?v=EYLS3-8Ouek
https://github.com/angular/angularfire2
https://ionicthemes.com/tutorials