Observable only returns cached data

Several things concern me here, but the biggest one is that every service is carrying two separate copies of information. There is that proverb about how a man with two watches never knows what time it is, and I’ve been bitten by that more times than I can count.

I recommend getting rid of all the direct arrays in the services, leaving only the BehaviorSubjects. I typically use a watch / peek / poke idiom as described here, and you should be able to adapt that to your situation.

I suspect this is the cause of your initial problem, because you are likely accessing different copies of the data in different places and misinterpreting what is happening as some sort of caching.

A more minor concern is that there’s no call to use localStorage for anything. Whatever you’re trying to do, better options exist. Ionic Storage has a very similar capability and API, better persistence guarantees, and eliminates the need to manually marshal things into JSON.