Unë kam një aplikacion shembulli i menaxhimit të listës së vogël i përbërë nga dy komponentë Angular 6 dhe një shërbimi:
ShapeListComponent
Një listë e formave secila me një buton redaktimi që lexohet nga një koleksion Cloud Firestore, i abonuar nëpërmjet thirrjes snapshotChanges() në një thirrje AngularFirestoreCollection dhe mbahet në një rxjs të vëzhgueshme.
ShapeEditComponent
Një faqe redaktimi për secilën formë, e cila lejon që emri të përditësohet ose forma të hiqet nga koleksioni. Pas redaktimit ose heqjes ose përditësimit të formës, përdoruesi lundrohet përsëri në itinerarin e listës së formave.
ShapeService
Përfundon thirrjet në AngularFire.
Problemi
Heqja e një artikulli nuk sillet siç prisja. Kur kthehet përsëri në listë, artikulli i hequr është ende aty, dhe çdo artikull pas artikullit të fshirë në listë dublikohet.
Megjithatë, të dhënat e dokumentit të dukshme në Konsolën e Firebase fshihen saktë dhe nuk shfaqen dublikatë.
A është dikush në gjendje të hedhë dritë nëse qasja ime për të përdorur AngularFire me Cloud Firestore dhe rxjs është e gabuar, apo duhet të funksionojë siç duhet?
Hapat për të riprodhuar
- Krijo një projekt të ri Firebase
- Konfiguro veçorinë e bazës së të dhënave (përzgjedhja e Cloud Firestore Beta në modalitetin e testimit)
Në cilësimet e projektit tuaj Firebase, zgjidhni "Shto Firebase në aplikacionin tuaj të internetit" dhe kopjoni js që përmban informacionin e lidhjes tuaj (duke shpërfillur rreshtin e fundit që inicializon aplikacionin siç bëhet në deklaratën e modulit më poshtë) në kujtesën e fragmenteve.
// Initialise Firebase var config = { apiKey: "...", authDomain: "...", databaseURL: "...", projectId: "...", storageBucket: "...", messagingSenderId: "..." };
Shko te shembulli stackblitz që kam krijuar dhe në
app.module.ts
zëvendëso të njëjtin fragment , duke e riemërtuar variablinconfig
nëfirebaseConfig
- Shtoni disa forma
- Ndryshoni formën e parë në listë dhe shtypni butonin "Hiq".
- Lista që rezulton përmban dublikatat e përmendura më sipër.
Shënime të tjera
E njëjta sjellje problematike NUK vërehet kur funksioni i heqjes përfshihet brenda komponentit të listës (dhe nuk kryhet navigimi i routerit). (Shihni këtë shembull që sillet korrekt - gjithashtu duhet të tregojë projektin tuaj Firebase Cloud Firestore)