Implementing CRUD services with caching
We need a service that can perform CRUD operations on a user so that we can implement a user profile. However, the service must be robust enough to withstand common errors. After all, it is very bad UX when users unintentionally lose the data they typed. Form data can be reset due to circumstances outside of a user’s control, like a network or validation error, or user errors, like hitting the back or refresh button by mistake. We will create a user service leveraging the CacheService
we built in Chapter 5, Designing Authentication and Authorization, so keep a copy of user data in localStorage
while the server processes it. The service will implement the following interface and, as always, reference the abstract IUser
interface over the concrete user implementation:
export interface IUserService {
getUser(id: string): Observable<IUser>
updateUser(id: string, user: IUser): Observable<IUser>
getUsers(
pageSize...