Ich habe einen Dienst mit dieser Methode:
export class TestModelService {
public testModel: TestModel;
constructor( @Inject(Http) public http: Http) {
}
public fetchModel(uuid: string = undefined): Observable<string> {
if(!uuid) {
//return Observable of JSON.stringify(new TestModel());
}
else {
return this.http.get("http://localhost:8080/myapp/api/model/" + uuid)
.map(res => res.text());
}
}
}
Im Konstruktor der Komponente abonniere ich Folgendes:
export class MyComponent {
testModel: TestModel;
testModelService: TestModelService;
constructor(@Inject(TestModelService) testModelService) {
this.testModelService = testModelService;
testService.fetchModel("29f4fddc-155a-4f26-9db6-5a431ecd5d44").subscribe(
data => { this.testModel = FactModel.fromJson(JSON.parse(data)); },
err => console.log(err)
);
}
}
Dies funktioniert, wenn ein Objekt vom Server stammt, ich jedoch versuche, ein Observable zu erstellen, das mit dem angegebenen subscribe()
Aufruf einer statischen Zeichenfolge testModelService.fetchModel()
funktioniert (dies geschieht, wenn keine UUID empfangen wird), sodass in beiden Fällen eine nahtlose Verarbeitung erfolgt.
typescript
promise
angular
observable
rxjs
Michail Michailidis
quelle
quelle
import { of } from 'rxjs';
und verwendenof
, anstattObservable.of
..map()
Ergebnisse für get, daher müssen Sie dies tun.pipe(map((res:any) => res.json()))
. Siehe hier: stackoverflow.com/a/35220045/986160Ab Juli 2018 und der Veröffentlichung von
RxJS 6
besteht die neue Möglichkeit, ein Observable aus einem Wert zu erhalten, darin, denof
Operator wie folgt zu importieren :import { of } from 'rxjs';
und erstellen Sie dann das Observable aus dem Wert wie folgt:
of(someValue);
Beachten Sie, dass Sie früher
Observable.of(someValue)
wie in der aktuell akzeptierten Antwort vorgehen mussten. Es gibt einen guten Artikel über die anderen RxJS 6 Änderungen hier .quelle
Die Dinge scheinen sich seit Angular 2.0.0 geändert zu haben
Die
.next()
Funktion wird auf Ihrem Teilnehmer aufgerufen.quelle
of
Funktion von rxjs importieren, wieimport 'rxjs/add/observable/of'
Auf diese Weise können Sie eine einfache Observable für statische Daten erstellen.
Ich hoffe diese Antwort ist hilfreich. Wir können stattdessen statische Daten über einen HTTP-Aufruf verwenden.
quelle
Auf diese Weise können Sie Observable aus Daten erstellen. In meinem Fall muss ich den Warenkorb pflegen:
service.ts
Component.ts
quelle