I will explain you my (probably little) problem :)
I'm trying to make a localStorage which set and get some data (array of object). I have one component which add object in my local storage array and one other which get this data.
I'm on ionic2 tabs app, and when I set my local storage, my other view where I get this it's not update...
I think I have to use a RxJs Subject but I don't know how do this properly.
Have a look on my current code
// LocalStorageService.ts
export class LocalStorageService {
public bookmarks: Subject<any> = new Subject()
constructor (public alertCtrl: AlertController) {}
setUserBookmarks(bookmarks: any) {
localStorage.setItem("myData", JSON.stringify(bookmarks));
this.bookmarks.next(bookmarks)
}
getUserBookmarks() {
return JSON.parse(localStorage.getItem("myData"))
}
Then, my components
// Component where I set data
export class ListEventsComponent {
bookmarks: any
constructor(private navParams: NavParams,
private localStorageService: LocalStorageService) {}
ngOnInit() {
this.localStorageService.bookmarks.subscribe(bookmarks => {
this.bookmarks = bookmarks
})
}
bookmark(event) {
this.localStorageService.setUserBookmarks(event)
}
}
and the last:
// Component where I get data
export class AboutPage {
public bookmarks: any
constructor(public navCtrl: NavController, private localStorageService:LocalStorageService) {
this.localStorageService.bookmarks.subscribe(bookmarks => {
this.bookmarks = bookmarks
console.log(bookmarks)
})
}
removeBookmark(eventID: string) {
this.localStorageService.removeUserBookmark(this.bookmarks, eventID)
}
}
So, how can I update my second component when I set in the first ? Thank you in advance, if I'm not clear, don't hesitate to say it :)