En la parte anterior de esta serie de tutoriales, aprendió cómo crear el componente agregar publicación para agregar nuevas publicaciones de blog. Aprendió cómo crear el punto final de la API REST para agregar una nueva publicación a la base de datos MongoDB.
En esta parte de la serie de tutoriales, aprenderá cómo implementar la funcionalidad para editar una publicación de blog existente de la lista de publicaciones de blog.
Comencemos clonando el código fuente de la última parte de la serie de tutoriales..
git clone https://github.com/royagasthyan/AngularBlogApp-Post EditPost
Vaya al directorio del proyecto e instale las dependencias necesarias.
cd EditPost / client npm install cd EditPost / server npm install
Una vez que tenga instaladas las dependencias, reinicie la aplicación cliente y servidor.
cd EditPost / client npm start cd EditPost / server node app.js
Dirija su navegador a http: // localhost: 4200 y tendrá la aplicación en ejecución.
En el ShowPostComponent
, agregará dos iconos para editar y eliminar la publicación del blog. Utilizará Font Awesome para mostrar los iconos de edición y eliminación..
Descarga e incluye la fuente de la carpeta impresionante en el bienes
carpeta.
En el src / app / index.html
página, incluye una referencia a la fuente impresionante CSS
estilo.
Ahora modifica el show-post / show-post.component.html
Archivo para incluir el HTML para editar y eliminar iconos.
Aquí es cómo el show-post.component.html
aspecto del archivo:
título de la entrada
Hace 3 díaspost.description
Lee mas…
Guarde los cambios anteriores y reinicie la aplicación cliente. Inicie sesión en la aplicación y podrá ver los iconos de edición y eliminación correspondientes a cada publicación de blog enumerada..
Cuando el usuario hace clic en el ícono de edición correspondiente a cualquier publicación de blog, debe completar los detalles de la publicación de blog en la ventana emergente de agregar publicación para actualizar.
Añadir un método de clic al icono de edición..
Dentro de CommonService
, debe definir un observable para realizar un seguimiento de cuando se hace clic en el botón de edición. Define lo observable como se muestra:
public postEdit_Observable = new Subject ();
Defina otra variable para realizar un seguimiento de la publicación que se va a editar..
public_to_be_edited; constructor () this.post_to_be_edited = new Post ();
Cada vez que haga clic en el botón de edición, mantendrá la publicación que se editará en la CommonService
y activar el observable para notificar la edición posterior. Defina dos métodos para configurar la publicación que se editará y para notificar la edición posterior..
notifyPostEdit () this.postEdit_Observable.next (); setPostToEdit (post: Post) this.post_to_be_edited = post; this.notifyPostEdit ();
Dentro del método de clic, llamarás al setPostToEdit
método de CommonService
. Aquí es cómo el editar post
método se ve:
editPost (post: post) this.commonService.setPostToEdit (post);
Tendrá el detalle de la publicación en el servicio común cuando el usuario haga clic en el botón de edición. Para mostrar la ventana emergente para agregar actualizaciones, debe hacer clic en el botón Agregar publicación programáticamente.
Dentro de home / home.component.html
archivo, agregar un #
identificador al botón de añadir entrada.
Importar ViewChild
y ElementRef
dentro de home.component.ts
expediente.
importe Component, ViewChild, ElementRef desde '@ angular / core';
Defina una referencia al botón de agregar dentro de la home.component.ts
expediente.
@ViewChild ('addPost') addBtn: ElementRef;
Dentro de InicioComponente
constructor, suscribirse a la postEdit_Observable
desde CommonService
. Al llamar al postEdit_Observable
devolución de llamada de suscripción, invoque el botón Agregar haga clic para mostrar la ventana emergente. Aquí es cómo el home.component.ts
aspecto del archivo:
importe Component, ViewChild, ElementRef desde '@ angular / core'; importe CommonService desde '… /service/common.service'; @Component (selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css']) clase de exportación HomeComponent @ViewChild ('addPost') addBtn: ElementRef; constructor (private commonService: CommonService) this.commonService.postEdit_Observable.subscribe (res => this.addBtn.nativeElement.click (););
Necesitas suscribirte a postEdit_Observable
en el add-post.component.ts
Archivo para configurar la publicación que se editará en la enviar
variable. Aquí es cómo el ngOnInit
método en add-post.component.ts
miradas
ngOnInit () this.commonService.postEdit_Observable.subscribe (res => this.post = this.commonService.post_to_be_edited;);
Guarde los cambios anteriores y reinicie el servidor cliente. Inicie sesión en la aplicación y haga clic en el botón Editar en cualquier publicación del blog. Podrá ver los detalles de la publicación completados en la ventana emergente agregar publicación.
Dentro servidor / app.js
, vamos a definir otro punto final de la API REST para actualizar los detalles de la publicación en función del ID de la publicación. Aquí está cómo se ve:
app.post ('/ api / post / updatePost', (req, res) => )
Vamos a usar primero Mangosta
para conectarse a la base de datos MongoDB.
app.post ('/ api / post / updatePost', (req, res) => mongoose.connect (url, useMongoClient: true, function (err) console.log ('conexión establecida');) ;)
Una vez establecida la conexión, usted hace uso de la actualizar
método en el modelo de Post.
Post.update (_id: req.body.id, title: req.body.title, descripción: req.body.description, (err, doc) => if (err) throw err;)
Estarás actualizando el post basado en el CARNÉ DE IDENTIDAD
De la publicación pasada. Como se ve en el código anterior, ha especificado la publicación _carné de identidad
Para actualizarse. En la segunda opción, ha especificado los campos a actualizar, que son título
y descripción
.
Una vez que los detalles se actualicen, devolverá el estado
junto con el número de filas afectadas durante la actualización. Aquí es cómo se ve el punto final de la API REST para la actualización posterior:
app.post ('/ api / post / updatePost', (req, res) => mongoose.connect (url, useMongoClient: true, function (err) if (err) throw err; Post.update ( _id: req.body.id, title: req.body.title, description: req.body.description, (err, doc) => if (err) throw err; return res.status (200). json (status: 'success', data: doc)));)
los CARNÉ DE IDENTIDAD
devuelto para cada post de MongoDB es _carné de identidad
, por lo que necesita modificar el carné de identidad
de nuestro modelo src / app / models / post.model.ts
. Aquí está cómo se ve:
clase de exportación Publicar constructor () this._id = "; this.title ="; this.description = "; _id público; título público; descripción pública;
Al hacer clic en el botón Agregar publicación, el método llamado será addPost
. Dentro de addPost
método en add-post.component.ts
, comprobarás si el enviar
objeto tiene un _carné de identidad
. Si una _carné de identidad
está presente, entonces debe llamar al método de actualización desde el servicio, de lo contrario, llamará al método agregar servicio posterior.
Crea un método llamado updatePost
dentro de add-post.service.ts
expediente.
updatePost (post: Post) return this.http.post ('/ api / post / updatePost', id: post._id, título: post.title, descripción: post.description)
Así es como se modifica. addPost
método de la add-post.component.ts
aspecto del archivo:
addPost () if (this.post.title && this.post.description) if (this.post._id) this.addPostService.updatePost (this.post) .subscribe (res => this.closeBtn.nativeElement .click (); this.commonService.notifyPostAddition ();); else this.addPostService.addPost (this.post) .subscribe (res => this.closeBtn.nativeElement.click (); this.commonService.notifyPostAddition ();); else else alert ('Título y Descripción requeridos');
Guarde los cambios anteriores y reinicie el servidor Angular y Node. Inicie sesión en la aplicación e intente editar una publicación. Aparecerá una ventana emergente para editar los detalles al hacer clic en el botón de edición. Haga clic en el botón Agregar y los detalles se actualizarán y se mostrarán en la lista de publicaciones del blog..
En este tutorial, implementó la funcionalidad para actualizar los detalles de la publicación del blog existente. Usted creó el punto final de la API REST de back-end para actualizar los detalles de la publicación del blog según la ID de la publicación del blog. Hiciste uso de la Mangosta
cliente para actualizar los detalles de la publicación del blog en la base de datos MongoDB.
En la siguiente parte, implementará la funcionalidad de eliminar publicaciones y cerrar sesión..
¿Cómo fue tu experiencia hasta ahora? Háganos saber sus opiniones, sugerencias o correcciones en los comentarios a continuación..
El código fuente de este tutorial está disponible en GitHub.