Angular 4 HTTP Call to node Method, делая мой объект неопределенным - PullRequest
0 голосов
/ 04 мая 2018

Есть ли способ сделать HTTP-вызов из Angular 4 и получить JSON-ответ без использования subscribe () ??.

Ответы [ 4 ]

0 голосов
/ 04 мая 2018

Да, вы можете сделать это без вызова подписки в машинописном коде. Вместо этого сделайте это, используя async pipe.

data$ : Observable<T>;

ngOnInit() {
this.data$ = this.service.get(); //which returns observable
}

Затем на стороне шаблона.

<div *ngFor="let dummy of data | async" > {{ dummy }}</div>
0 голосов
/ 04 мая 2018

Если вы не хотите / не хотите использовать наблюдаемые, вы также можете попробовать async/await, например:

public async fetchData(): Promise<any> {
 try {
    const response = await this.http.get(url).toPromise();
    const data = data.json();
    // bind you component properties by accessing data object
    this.userName = data.name;
 } catch(e) {
   // error handling 
 }
}
0 голосов
/ 04 мая 2018

Вы можете использовать publish и connect из rxjs (https://www.learnrxjs.io/operators/multicasting/publish.html)

this.http.get(url)
    .publish()
    .connect();
0 голосов
/ 04 мая 2018

Конечно, вместо subscribe() используйте toPromise():

import { toPromise } from 'rxjs/operators';

this.http.get(url).pipe(toPromise()).then((response) => {
  console.log(response);
});

Но нет реальной разницы между этим или subscribe(), потому что http-вызов является наблюдаемым, который завершается после генерации. Это означает, что отпадает необходимость отписываться

...