我正在使用Angular和WordPress rest API。一切都很好。但是我对以下代码的行为有些困惑。
getpost(){
return this.http.get('someURL');
}
以上功能驻留在服务中。当我尝试订阅返回的observable时,出现错误。 但是下面的代码可以正常工作。
getpost(){
let someVAR = this.http.get('someURL');
return someVAR;
}
请说明为什么,上述代码无法返回。预先感谢
答案 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
}