Nella parte precedente di questa serie di tutorial hai appreso come creare il componente Aggiungi post per aggiungere nuovi post del blog. Hai imparato come creare l'endpoint dell'API REST per aggiungere un nuovo post al database MongoDB.
In questa parte della serie di tutorial, imparerai come implementare la funzionalità per modificare un post di blog esistente dall'elenco dei post del blog.
Iniziamo clonando il codice sorgente dall'ultima parte della serie di tutorial.
git clone https://github.com/royagasthyan/AngularBlogApp-Post EditPost
Passare alla directory del progetto e installare le dipendenze richieste.
cd EditPost / client npm install cd EditPost / server npm install
Dopo aver installato le dipendenze, riavviare l'applicazione client e server.
cd EditPost / client npm start cd EditPost / server node app.js
Puntare il browser su http: // localhost: 4200 e si avrà l'applicazione in esecuzione.
Nel ShowPostComponent
, aggiungerai due icone per la modifica e l'eliminazione del post del blog. Farai uso di Font Awesome per visualizzare le icone di modifica ed eliminazione.
Scarica e includi la fantastica cartella dei font nel risorse
cartella.
Nel src / app / index.html
pagina, includi un riferimento al font fantastico CSS
stile.
Ora modifica il spettacolo-post / show-post.component.html
file per includere l'HTML per la modifica e l'eliminazione delle icone.
Ecco come show-post.component.html
aspetto del file:
titolo del post
3 giorni faPost.description
leggi di più…
Salvare le modifiche precedenti e riavviare l'applicazione client. Accedere all'applicazione e sarà possibile visualizzare le icone di modifica ed eliminazione corrispondenti a ciascun post del blog elencato.
Quando l'utente fa clic sull'icona di modifica corrispondente a qualsiasi post del blog, è necessario popolare i dettagli del post del blog nel popup di aggiunta per l'aggiornamento.
Aggiungi un metodo di clic all'icona di modifica.
Dentro il CommonService
, è necessario definire un osservabile per tenere traccia di quando si fa clic sul pulsante di modifica. Definisci l'osservabile come mostrato:
pubblico postEdit_Observable = new Subject ();
Definisci un'altra variabile per tenere traccia del post da modificare.
pubblico post_to_be_edited; costruttore () this.post_to_be_edited = new Post ();
Ogni volta che si fa clic sul pulsante di modifica, si manterrà il post da modificare nel CommonService
e attivare l'osservabile per notificare la modifica post. Definire due metodi per impostare il post da modificare e per notificare la modifica del post.
notifyPostEdit () this.postEdit_Observable.next (); setPostToEdit (post: Post) this.post_to_be_edited = post; this.notifyPostEdit ();
All'interno del metodo click, chiamerai il setPostToEdit
metodo da CommonService
. Ecco come modifica post
aspetto del metodo:
editPost (post: Post) this.commonService.setPostToEdit (post);
Avrai i dettagli sul post nel servizio comune quando l'utente fa clic sul pulsante di modifica. Per mostrare il popup di aggiunta post per l'aggiornamento, è necessario fare clic sul pulsante Aggiungi post programmaticamente.
Dentro il home / home.component.html
file, aggiungi a #
identificatore al pulsante Aggiungi post.
Importare ViewChild
e ElementRef
dentro il home.component.ts
file.
import Component, ViewChild, ElementRef da '@ angular / core';
Definire un riferimento al pulsante Aggiungi all'interno del home.component.ts
file.
@ViewChild ('addPost') addBtn: ElementRef;
Dentro il HomeComponent
costruttore, iscriviti al postEdit_Observable
a partire dal CommonService
. Alla chiamata del postEdit_Observable
richiamo dell'abbonamento, richiama il pulsante Aggiungi per mostrare il popup. Ecco come home.component.ts
aspetto del file:
import Component, ViewChild, ElementRef da '@ angular / core'; import CommonService da '... /service/common.service'; @Component (selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css']) export class HomeComponent @ViewChild ('addPost') addBtn: ElementRef; costruttore (commonService privato: CommonService) this.commonService.postEdit_Observable.subscribe (res => this.addBtn.nativeElement.click (););
Devi iscriverti a postEdit_Observable
nel add-post.component.ts
file per impostare il post da modificare sul inviare
variabile. Ecco come ngOnInit
metodo in add-post.component.ts
sembra:
ngOnInit () this.commonService.postEdit_Observable.subscribe (res => this.post = this.commonService.post_to_be_edited;);
Salvare le modifiche precedenti e riavviare il server client. Accedere all'applicazione e fare clic sul pulsante Modifica su qualsiasi post del blog. Sarai in grado di visualizzare i dettagli del post popolati nel popup di aggiunta post.
Dentro server / app.js
, definiamo un altro endpoint dell'API REST per aggiornare i dettagli dei post in base all'ID del post. Ecco come appare:
app.post ('/ api / post / updatePost', (req, res) => )
Iniziamo Mangusta
per connettersi al database MongoDB.
app.post ('/ api / post / updatePost', (req, res) => mongoose.connect (url, useMongoClient: true, function (err) console.log ('connessione stabilita');) ;)
Una volta stabilita la connessione, fai uso di aggiornare
metodo sul modello Post.
Post.aggiornamento (_id: req.body.id, titolo: req.body.title, descrizione: req.body.description, (err, doc) => if (err) throw err;)
Aggiornerai il post in base a ID
del post passato. Come visto nel codice sopra, hai specificato il post _ID
essere aggiornato. Nella seconda opzione, hai specificato i campi da aggiornare, quali sono titolo
e descrizione
.
Una volta aggiornati i dettagli, restituirai il stato
insieme al numero di righe interessate durante l'aggiornamento. Ecco come appare l'endpoint dell'API REST per l'aspetto dell'aggiornamento:
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, descrizione: req.body.description, (err, doc) => if (err) throw err; return res.status (200). json (stato: 'successo', dati: doc)));)
Il ID
è restituito per ogni post dal MongoDB _ID
, quindi è necessario modificare il id
del nostro modello src / app / models / post.model.ts
. Ecco come appare:
export class Post constructor () this._id = "; this.title ="; this.description = "; _id pubblico; titolo pubblico; descrizione pubblica;
Quando fai clic sul pulsante aggiungi post, il metodo chiamato sarà addPost
. Dentro il addPost
metodo in add-post.component.ts
, controllerai se il inviare
l'oggetto ha un _ID
. Se uno _ID
è presente quindi devi chiamare il metodo di aggiornamento dal servizio, altrimenti chiamerai il metodo aggiungi servizio post.
Crea un metodo chiamato updatePost
dentro il add-post.service.ts
file.
updatePost (post: Post) return this.http.post ('/ api / post / updatePost', id: post._id, titolo: post.title, descrizione: post.description)
Ecco come è stato modificato addPost
metodo dal add-post.component.ts
aspetto del file:
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 alert ('Titolo e descrizione richiesti');
Salvare le modifiche precedenti e riavviare entrambi i server Angolare e Nodo. Accedi all'applicazione e prova a modificare un post. Verrà visualizzato un popup per modificare i dettagli facendo clic sul pulsante di modifica. Fare clic sul pulsante Aggiungi e i dettagli verranno aggiornati e visualizzati nell'elenco dei post del blog.
In questo tutorial, hai implementato la funzionalità per aggiornare i dettagli del post del blog esistente. È stato creato l'endpoint dell'API REST back-end per aggiornare i dettagli del post del blog in base all'ID del post del blog. Hai fatto uso di Mangusta
client per aggiornare i dettagli del post del blog nel database MongoDB.
Nella parte successiva, implementerai il post di eliminazione e la funzionalità di disconnessione.
Com'è stata la tua esperienza finora? Fateci sapere i vostri pensieri, suggerimenti o eventuali correzioni nei commenti qui sotto.
Il codice sorgente di questo tutorial è disponibile su GitHub.