Ich habe zwei angular2 Dienstleistungen, eine Bereitstellung von DatenZwei angular2 Dienste gleich beobachtbare
@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));
}
und eine Bereitstellung von Einstellungen
@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));
}
Die Antwort/api/foo
{
"settings": {
...
}
"data": {
....
}
}
ist
Diese Dienste verwenden beide denselben api-Aufruf, um ihren Inhalt abzurufen, und der Aufruf an den Server wird für dasselbe zweimal ausgeführt Daten.
Ich weiß, dass die vorhandene API nicht ideal ist, um sowohl Daten als auch Einstellungen in einer Nachricht zu kombinieren und eventuell ersetzt werden muss.
In der Zwischenzeit ist meine Frage: Mit der vorhandenen API gibt es eine direkte Möglichkeit, einen Datendienst und einen Einstellungsdienst zur Verfügung zu stellen, die denselben api Anruf teilen? Kann es einen Anruf bei der API geben, die Daten an beide Dienste liefert, oder muss jeder Dienst unabhängig arbeiten?
UPDATE: Meine Gedanken so weit sind, dass ich einen Basisdienst erstellen muß, die den tatsächlichen http Anruf tätigt, diese FooService nennen. FooService muss dann sowohl in SettingsService als auch in DataService eingefügt werden, die dann die Ausgabe von FooService als Einstellungen und Daten darstellen können. Wo stecke ich fest, wie gabele ich die von FooService zurückgegebene Observable<any>
in zwei andere Observables, Observeable<Data>
in Dataservice und Observeable<Settings>
in SettingsService? Ist das überhaupt möglich?
@ 'Simon H '- Der Code funktioniert im Moment gut, es gibt sowohl eine Einstellung als auch eine Dateneigenschaft in der Antwort und es besteht keine Notwendigkeit für dynamische Auswahl tion. Meine Frage ist, wie man das Design so umgestaltet, dass nur ein HTTP-Aufruf gemacht wird, um die Daten zu erhalten, aber zwei Dienste bereitgestellt werden, die diese Daten verwenden. –