Встречается на собеседованиях • сегодня
Как при помощи принципа разделения команды и запроса получить данные в двух компонентах из одного запроса
Используя паттерн Command Query Separation (CQS), можно разделить логику получения данных и их использования. Для этого создадим сервис, который будет выполнять запрос и хранить данные, доступные для подписки:
```ts
// data.service.ts
@Injectable({ providedIn: 'root' })
export class DataService {
private dataSubject = new BehaviorSubject(null);
data$ = this.dataSubject.asObservable();
loadData(): Observable {
return this.http.get('/api/data').pipe(
tap(data => this.dataSubject.next(data))
);
}
}
```
Компоненты могут использовать этот сервис:
```ts
// component1.ts
export class Component1 {
data$ = this.dataService.data$;
constructor(private dataService: DataService) {
this.dataService.loadData().subscribe();
}
}
// component2.ts
export class Component2 {
data$ = this.dataService.data$;
constructor(private dataService: DataService) {}
}
```
Таким образом:
1. Команда `loadData()` выполняет запрос
2. Запрос `data$` предоставляет данные
3. Оба компонента получают одни и те же данные без дублирования запросов

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы