为什么“返回<observable>”无效?

时间:2019-09-19 15:25:24

标签: angular ionic4 rxjs-observables

我正在使用Angular和WordPress rest API。一切都很好。但是我对以下代码的行为有些困惑。

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

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

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

请说明为什么,上述代码无法返回。预先感谢

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情。

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

答案 1 :(得分:0)

您在此处显示的代码将起作用。但是,要进行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  })
}

我不确定您目前如何使用它,但是上面是它的工作方式。

答案 2 :(得分:0)

以下是一些如何使用HttpClient调用http请求的步骤:

  

HttpClient使用来自'@ angular / common / http'的导入{HttpClient};

然后您需要订阅可观察对象(也可以使用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
}