În partea anterioară a acestei serii de tutorial ați învățat cum să creați componenta postare pentru a adăuga noi postări în blog. Ați învățat cum să creați punctul final al API-ului REST pentru a adăuga un nou post la baza de date MongoDB.
În această parte a seriei de tutorial, veți învăța cum să implementați funcția de editare a unei postări de blog existente din lista de postări pe blog.
Să începem prin clonarea codului sursă din ultima parte a seriei tutorial.
git clone https://github.com/royagasthyan/AngularBlogApp-Post EditPost
Navigați la directorul proiectului și instalați dependențele necesare.
cd EditPost / client npm instalare cd EditPost / server npm install
Odată ce aveți dependențele instalate, reporniți aplicația client și server.
cd EditarePost / client npm start cd EditPost / server nod app.js
Punctați browser-ul dvs. la http: // localhost: 4200 și veți avea aplicația care rulează.
În ShowPostComponent
, veți adăuga două pictograme pentru editarea și ștergerea postării pe blog. Veți utiliza Font Awesome pentru a afișa pictogramele de editare și ștergere.
Descărcați și includeți folderul minunat pentru fonturi din bunuri
pliant.
În src / app / index.html
pagina, include o referință la font minunat CSS
stil.
Acum modificați Arată-post / spectacol-post.component.html
fișier pentru a include codul HTML pentru editarea și ștergerea icoanelor.
Iată cum spectacol-post.component.html
file looks:
Post.title
acum 3 zilePost.description
Citeste mai mult…
Salvați modificările de mai sus și reporniți aplicația client. Conectați-vă la aplicație și veți putea vizualiza pictogramele de editare și ștergere corespunzătoare fiecărui post de blog listat.
Când utilizatorul dă clic pe pictograma de editare corespunzătoare oricărei postări de pe blog, trebuie să completați detaliile postării de blog în fereastra de adăugare a pop-ului pentru actualizare.
Adăugați o metodă de clic pe pictograma de editare.
În interiorul CommonService
, trebuie să definiți o observabilă pentru a ține evidența când se face clic pe butonul de editare. Definiți observabil după cum se arată:
public postEdit_Observable = Subiect nou ();
Definiți o altă variabilă pentru a urmări postarea care urmează să fie editată.
publice post_to_be_edited; constructor () this.post_to_be_edited = mesaj nou ();
De fiecare dată când se face clic pe butonul de editare, veți păstra postarea pentru a fi editată în CommonService
și declanșează observabilul de a notifica post editarea. Definiți două metode pentru a seta postarea care trebuie editată și pentru a notifica editarea postării.
notifyPostEdit () this.postEdit_Observable.next (); setPostToEdit (post: Post) this.post_to_be_edited = post; this.notifyPostEdit ();
În interiorul metodei de clic, veți apela setPostToEdit
metoda de la CommonService
. Iată cum editează postarea
metoda arată:
editPost (postare: Post) this.commonService.setPostToEdit (post);
Veți avea detaliile postului în serviciul comun atunci când utilizatorul face clic pe butonul de editare. Pentru a afișa opțiunea de adăugare a pop-up-ului pentru actualizare, trebuie să faceți clic pe butonul de adăugare post programat.
În interiorul acasă / home.component.html
fișier, adăugați a #
identificatorul butonului pentru adăugarea postului.
Import ViewChild
și ElementRef
în interiorul home.component.ts
fişier.
import Component, ViewChild, ElementRef de la '@ angular / core';
Definiți o trimitere la butonul de adăugare în interiorul home.component.ts
fişier.
@ViewChild ('addPost') addBtn: ElementRef;
În interiorul HomeComponent
constructor, abonați la postEdit_Observable
din CommonService
. La apelarea postEdit_Observable
abonare apel invers, invoca butonul de add click pentru a afișa pop-up. Iată cum home.component.ts
file looks:
import Component, ViewChild, ElementRef de la '@ angular / core'; import CommonService de la "... /service/common.service"; @Component (selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css']) clasa de export HomeComponent @ViewChild ('addPost') addBtn: ElementRef; constructor (private commonService: CommonService) this.commonService.postEdit_Observable.subscribe (res => this.addBtn.nativeElement.click (););
Trebuie să vă abonați postEdit_Observable
în add-post.component.ts
fișier pentru a seta postul de editat pe post
variabil. Iată cum ngOnInit
metoda în add-post.component.ts
arată:
ngOnInit () this.commonService.postEdit_Observable.subscribe (res => this.post = this.commonService.post_to_be_edited;);
Salvați modificările de mai sus și reporniți serverul client. Conectați-vă la aplicație și faceți clic pe butonul de editare în funcție de orice postare pe blog. Veți putea vizualiza detaliile postate populate în fereastra pop-up adăugare post.
Interior Server / app.js
, să definim un alt punct final pentru API-ul REST pentru a actualiza detaliile postului pe baza ID-ului postului. Iată cum arată:
app.post ('/ api / post / updatePost', (req, res) =>
Să folosim mai întâi Mangustă
pentru a vă conecta la baza de date MongoDB.
app.post ('/ api / post / updatePost', (req, res) => mongoose.connect (url, useMongoClient: true, function (err) console.log ;)
Odată ce conexiunea este stabilită, utilizați Actualizați
pe modelul Post.
Post.update (_id: req.body.id, title: req.body.title, descriere: req.body.description, (err, doc) => if (err)
Veți actualiza postarea în funcție de ID-ul
a postului trecut. După cum se vede în codul de mai sus, ați specificat postarea _id
a fi tinut la curent. În a doua opțiune, ați specificat câmpurile care trebuie actualizate, care sunt titlu
și Descriere
.
Odată ce detaliile se actualizează, veți reveni stare
împreună cu numărul de rânduri afectate în timpul actualizării. Iată cum arată punctul final pentru API-ul REST pentru actualizarea postului:
(rr, res) => mongoose.connect (url, useMongoClient: true, funcția (err) if (err) _id: req.body.id, title: req.body.title, descriere: req.body.description, (err, doc) => if (err) throw err; retur res.status (200). json (status: 'succes', date: doc);)
ID-ul
returnat pentru fiecare post din MongoDB este _id
, astfel încât trebuie să modificați id
a modelului nostru src / app / modele / post.model.ts
. Iată cum arată:
clasa de export Postați constructor () this._id = "; this.title ="; this.description = "; public _id; titlu public; descriere publică;
Când faceți clic pe butonul de adăugare a postului, va fi apelată metoda addPost
. În interiorul addPost
metoda în add-post.component.ts
, veți verifica dacă post
obiect are un _id
. Daca un _id
este prezent, atunci trebuie să apelați metoda de actualizare din serviciu, altfel veți apela metoda de adăugare a serviciului post.
Creați o metodă numită updatePost
în interiorul add-post.service.ts
fişier.
updatePost (post: Post) return this.http.post ('/ api / post / updatePost', id: post._id, titlu: post.title, descriere: post.description
Iată cum a fost modificat addPost
metoda de la add-post.component.ts
file looks:
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 ();); altceva this.addPostService.addPost (this.post) .subscribe (res => this.closeBtn.nativeElement.click (); this.commonService.notifyPostAddition ();); altceva alert ('Titlul și descrierea necesare');
Salvați modificările de mai sus și reporniți serverul Angular și Node. Conectați-vă la aplicație și încercați să editați o postare. Veți avea un popup afișat pentru a edita detaliile făcând clic pe butonul de editare. Faceți clic pe butonul Adăugați, iar detaliile vor fi actualizate și afișate în lista de postări pe blog.
În acest tutorial, ați implementat funcționalitatea pentru actualizarea detaliilor existente în postarea pe blog. Ați creat sfârșitul final al API-ului REST pentru a actualiza detaliile postării de blog pe baza ID-ului postului de blog. Ai folosit Mangustă
client pentru a actualiza detaliile postării pe blog în baza de date MongoDB.
În partea următoare, veți implementa funcția de ștergere post și deconectare.
Cum a fost experiența dvs. până acum? Spuneți-ne gândurile, sugestiile sau corecțiile din comentariile de mai jos.
Codul sursă din acest tutorial este disponibil pe GitHub.