Saya memiliki layanan yang memiliki metode ini:
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());
}
}
}
di konstruktor komponen saya berlangganan seperti ini:
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)
);
}
}
Ini berfungsi jika sebuah objek berasal dari server tetapi saya mencoba membuat observable yang akan bekerja dengan subscribe()
panggilan yang diberikan untuk string statis (ini terjadi ketika testModelService.fetchModel()
tidak menerima uuid) sehingga ada penanganan yang mulus dalam kedua kasus.
typescript
promise
angular
observable
rxjs
Michail Michailidis
sumber
sumber
import { of } from 'rxjs';
dan menggunakanof
, bukanObservable.of
..map()
hasil get jadi Anda perlu melakukannya.pipe(map((res:any) => res.json()))
. Lihat di sini: stackoverflow.com/a/35220045/986160Mulai Juli 2018 dan rilis
RxJS 6
, cara baru untuk mendapatkan Observable dari suatu nilai adalah dengan mengimporof
operator seperti ini:import { of } from 'rxjs';
dan kemudian buat yang dapat diamati dari nilainya, seperti:
of(someValue);
Perhatikan, bahwa Anda dulu harus melakukan
Observable.of(someValue)
seperti dalam jawaban yang diterima saat ini. Ada artikel bagus tentang perubahan RxJS 6 lainnya di sini .sumber
Hal-hal tampaknya telah berubah sejak Angular 2.0.0
The
.next()
fungsi akan dipanggil pelanggan Anda.sumber
of
fungsi rxjs, sepertiimport 'rxjs/add/observable/of'
Ini adalah bagaimana Anda dapat membuat observasi sederhana untuk data statis.
Saya harap jawaban ini bermanfaat. Kita bisa menggunakan panggilan HTTP sebagai pengganti data statis.
sumber
Dengan cara ini Anda dapat membuat Observable from data, dalam kasus saya, saya perlu mengelola keranjang belanja:
service.ts
Component.ts
sumber