Почему «возврат <observable>» не работает? - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю с Angular и WordPress rest API.Все идет хорошо.Но я немного путаюсь с поведением следующего кода:

getpost(){
    return this.http.get('someURL');
}

Вышеупомянутая функция находится в службе.Когда я пытаюсь подписаться на возвращаемую наблюдаемую информацию, я получаю сообщение об ошибке.Но приведенный ниже код работает нормально.

getpost(){
    let someVAR = this.http.get('someURL');
    return someVAR;
} 

Пожалуйста, уточните ПОЧЕМУ приведенный выше код не возвращается наблюдаемым.заранее спасибо

Ответы [ 3 ]

0 голосов
/ 20 сентября 2019

Вот несколько шагов, как вызвать http-запрос с помощью HttpClient:

HttpClient с помощью импорта {HttpClient} из '@ angular / common / http';

а затем вам нужно прописать наблюдаемое (также вы можете использовать RxJS, чтобы сделать больше с наблюдаемым).

constructor(
    private httpClient: HttpClient
) { }

ngOnInit() { 
    // 2. Then you need to subscribe the observable
    this.getPost().subscribe(resp => {
       console.log("When success", resp);
    }, err => {
       console.log("When error", err);
    });
}

getPost() {
    return this.httpClient.get('someURL'); // 1. This will return the observable
}
0 голосов
/ 20 сентября 2019

Вы можете попробовать что-то вроде этого.

class PostService {
   public getpost(userId): Observable<any> {
        return this.http.get<any>(this.apiurl + 'user/posts/' + userId);
      }
}

class MyClass implements OnInit {
      post: any;

      constructor(private myService: MyService) {
        this.userInformation = JSON.parse(localStorage.getItem('user'));
      }

      ngOnInit() {
        this.myService.getpost(userId).subscribe((posts) => {
          this.post = post;
        })
      }
   }
0 голосов
/ 19 сентября 2019

Код, который вы показываете здесь, будет работать.Но для того, чтобы сделать http-вызов, вам нужно подписаться на это наблюдаемое.

public getData() {
return this.http.get('someUrl');
}

export class MyComponent { 

constructor(private myService: MyService){}
usingData() {
this.myService.getData().subscribe(data => { // do stuff with the data  })
}

Я не уверен, как вы используете его в настоящее время, но выше указано, как оно должно работать.

...