Issue
I am trying to implement a delete function for ion-items in an ion-list which are stored in a Firestore instance. I tried to solve it with the .splice()
function but this throws following error:
Property 'splice' does not exist on type 'Observable<any[]>'.ts(2339)
Anyone an idea how to solve this?
The code looks like this:
HTML
<ion-item-sliding *ngFor="let space of spaces | async; let i = index">
<ion-item>
<ion-icon name="ellipse-outline"></ion-icon>
<ion-label>
{{ space.spaceName }}
</ion-label>
</ion-item>
<ion-item-options (ionSwipe)="deleteSpace(i)">
<ion-item-option color="success" (click)="editspacenameModal()">
Edit
</ion-item-option>
<ion-item-option color="danger" (click)="deleteSpace(i)" expandable>
Delete
</ion-item-option>
</ion-item-options>
</ion-item-sliding>
TS
export class ActivitiesPage implements OnInit {
spaces: Observable<any[]>;
...
deleteSpace(i) {
this.spaces.splice(i,1);
console.log('deleteSpace() called')
}
Solution
Here's how I solved it:
HTML
<ion-item-sliding *ngFor="let space of spaces | async">
<ion-item detail>
<ion-icon name="ellipse-outline" start></ion-icon>
<ion-label>
{{ space.spaceName }}
</ion-label>
</ion-item>
<ion-item-options (ionSwipe)="deleteSpace(space)">
<ion-item-option color="success" (click)="editspaceModal(space)"> Edit </ion-item-option>
<ion-item-option color="danger" (click)="deleteSpace(space)" expandable> Delete </ion-item-option>
</ion-item-options>
</ion-item-sliding>
TS
deleteSpace(space: Space): void {
console.log('space.id',space)
this.setisDeleted(space);
}
setisDeleted(space): Promise<any> {
const isDeleted = true;
return this.angularFirestore
.collection('accounts')
.doc(this.userId)
.collection("spaces")
.doc(space.spaceId)
.update({ isDeleted })
}v
Answered By - HansiFLK
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.