-4

我正在使用 Angular 和 WordPress REST API。一切都很顺利。但是我对以下代码的行为有点困惑。

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

上述功能驻留在服务中。当我尝试订阅返回的 observable 时,出现错误。但是下面的代码工作正常。

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

请澄清为什么上面的代码没有返回可观察的。提前致谢

4

3 回答 3

2

你可以尝试这样的事情。

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;
        })
      }
   }
于 2019-09-20T10:47:54.250 回答
0

您在此处显示的代码将起作用。但是为了进行 http 调用,你需要订阅那个 observable。

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  })
}

我不确定您目前如何使用它,但以上是它应该如何工作。

于 2019-09-19T15:31:06.283 回答
0

那么这里有一些步骤如何使用 HttpClient 调用 http 请求:

HttpClient 使用 import { HttpClient } from '@angular/common/http';

然后你需要订阅 observable(你也可以使用 RxJS 对 observable 做更多的事情)。

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
}
于 2019-09-20T08:28:03.573 回答