Textbook[ ] 在设置等于订阅 Observable<Textbook[]> 后未定义

Textbook[ ] is undefined after setting it equal to subscribing to Observable<Textbook[]>

下面是我调用 GET HTTP 方法的方式:

getTextbooks() :Observable<Textbook[]> {
    return this.http.get<Textbook[]>('http://localhost:3000/catalogue');
}

它解析对 Textbook[] 的 HTTP 响应和 returns 一个可观察的

然后我订阅 observable 并像这样获取数据:


this.textbookService.getTextbooks().subscribe(
    (data: Textbook[]) => this.textbooks = data,
    (err: any) => console.log(err),
);

奇怪的是,检查 Chrome 检查工具中的网络选项卡显示它确实收到了一组对象,每个对象都有正确的参数,以及 200OK 状态。如果我在 .subscribe 方法的回调中打印出数据,它也会很好地显示教科书数组。就在我尝试设置 this.textbooks = data 时,我发现 this.textbook 未定义。 this.textbooks 也是 Textbook[] 类型,与 data[] 相同。

任何建议都会很棒,谢谢!

您可能试图在订阅块外打印 this.textbook

由于调用是异步的,因此请仅在调用后检查(即订阅块已解决)

因此订阅块内的用户 this.textbook

this.textbookService.getTextbooks().subscribe(
    (data: Textbook[]) => {
           this.textbooks = data;
           console.log(this.textbook);
           },
    (err: any) => console.log(err),
);