Я передаю реферат DataService
, который, вероятно, будет иметь несколько реализаций.Я хочу иметь реализацию, которая использует LocalStorage
в качестве бэкэнда, в основном для тестирования, и, возможно, бэкэнд Google и Facebook для хранения данных моего приложения:
@Injectable({
providedIn: 'root'
})
abstract class DataService {
abstract get(token: string): Observable<any>
abstract set(token:string, data: any): void
}
@Injectable({
providedIn: 'root'
})
export class LocalDataService implements DataService {
constructor() {}
get(token: string): Observable<string> {
return of(localStorage.getItem(token));
}
set(token: string, data: string): void {
localStorage.setItem(token, data);
}
}
@Injectable({
providedIn: 'root'
})
export class GDriveDataService implements DataService {...}
@Injectable({
providedIn: 'root'
})
export class FacebookDataService implements DataService {...}
Моя проблема в том, что я могу знать только, какую реализациюиспользовать после входа пользователя в систему с учетной записью Google или Facebook.
Можно ли переключить предоставленную реализацию Службы после загрузки приложения?Нужно ли использовать другой подход?