gpt4 book ai didi

javascript - Angular 5 - HttpClient 服务 - 组件未获取数据

转载 作者:太空狗 更新时间:2023-10-29 17:56:37 24 4
gpt4 key购买 nike

我正在使用 Angular 5 并尝试从 JsonPlaceholder 获取一些数据。

首先我创建了服务,然后添加:

import { HttpClientModule } from '@angular/common/http';

这是服务代码:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class DataService {

private ROOT_URL = 'http://jsonplaceholder.typicode.com';

constructor(private http: HttpClient) {}

getPosts() {
this.http.get(`${this.ROOT_URL}/posts`).subscribe(data => {
return data;
});
}

}

最后,在我的 app.component.ts 上:

import { Component, OnInit } from '@angular/core';
import { DataService } from '../../services/data.service';

@Component({
selector: 'app-root',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.css']
})
export class AppComponent implements OnInit {

data;

constructor(private dataService: DataService) {

this.data = dataService.getPosts();
console.log(this.data;
}

ngOnInit() {
}

}

在控制台上它只是返回'Undefined'

我做错了什么?

最佳答案

不要订阅服务,返回可观察对象并在组件上订阅它。因为它是异步的,所以组件上的数据变量将是未定义的,因为您在 http 请求可以解析值之前分配。

关于服务:

getPosts() {
return this.http.get(`${this.ROOT_URL}/posts`);
}

在组件上:

ngOnInit() {
this.dataService.getPosts().subscribe(posts => this.posts = posts);
}

关于javascript - Angular 5 - HttpClient 服务 - 组件未获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com