У меня есть две angular2 услуги, из которых обеспечивает данныеДва angular2 службы, использующие ту же наблюдаемую
@Injectable()
export class DataService {
constructor(private http: Http) { }
public getData(): Observable<Data> {
return this.http.get('/api/foo')
.map(res => new Data(res.json().data));
}
и один, обеспечивающие настройки
@Injectable()
export class SettingsService {
constructor(private http: Http) { }
public getSettings(): Observable<Settings> {
return this.http.get('/api/foo')
.map(res => new Settings(res.json().settings));
}
Отклик/API/Foo является
{
"settings": {
...
}
"data": {
....
}
}
Эти службы используют один и тот же вызов api для получения своего контента, а вызов на сервер производится дважды для того же данные.
Я понимаю, что существующий api не идеален в объединении данных и настроек в одном сообщении и может быть в конечном итоге необходимо заменить.
Тем временем мой вопрос: используя существующий api, есть простой способ предоставить службу данных и службу настроек, которые используют один и тот же вызов api? Может ли быть один вызов api, передающий данные обеим службам, или каждая служба будет работать независимо?
UPDATE: Мои мысли так далеко, что мне нужно, чтобы создать базовую услугу, которая делает фактический HTTP вызов называем это FooService. Затем FooService необходимо вводить как в SettingsService, так и в DataService, которые затем могут представлять результаты FooService в качестве параметров и данных соответственно. Где я застрял, как разблокировать Observable<any>
, возвращенный FooService, в два других Observables, Observeable<Data>
в Dataservice и Observeable<Settings>
в SettingsService? Возможно ли это?
@ 'Simon H '- код работает нормально на данный момент, в ответе есть как свойство настройки, так и свойство данных, и нет необходимости в динамическом selec Тион. Мой вопрос заключается в том, как реорганизовать проект так, чтобы был сделан только один HTTP-вызов для получения данных, но две службы предоставляются с использованием этих данных. –