【发布时间】:2020-03-07 21:45:57
【问题描述】:
我正在尝试使用 Angular 8 调用我的 API 并将 JSON 响应记录到控制台中,但无论我做什么,控制台都会显示某些内容未定义并且没有记录其他任何内容。
组件:
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpdaService } from '../httpda.service';
import { Kbs } from '../kbs';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
observableKbs: Observable<any[]>;
kbs: Kbs[];
constructor(private http: HttpdaService) { }
ngOnInit() {
this.getKbs();
console.log(this.kbs);
}
getKbs() {
this.observableKbs = this.http.getKbs();
this.observableKbs.subscribe(
kbs => this.kbs = kbs,
err => this.http.checkErr(err)
);
return this.kbs;
}
}
服务:
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Router } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class HttpdaService {
serverUrl = 'http://127.0.0.1/';
constructor(private http: HttpClient, private _router: Router) { }
getKbs(): Observable<any> {
return this.http.get<any>(this.serverUrl);
}
checkErr(err) {
if (err instanceof HttpErrorResponse) {
console.log(err.status);
}
}
private extractData(res: Response) {
let body = res.json();
return body;
}
}
型号:
export class Kbs {
'message': string;
}
当我使用 cURL 调用我的 API 时会收到什么 -
curl 127.0.0.1
{ "message": "welcome" }
这是我在控制台中得到的 -
【问题讨论】:
-
首先发布错误...
-
另外,实际上应该由 service 来应用 checkErr,因此您不必在每个消费者中一次又一次地这样做。
-
@Carsten,当然,但是有错误。它只是在控制台中显示未定义。我现在就贴出来。
-
将
console.log(this.kbs);放入.subscribe()在this.kbs=kbs之后可观察到
标签: angular typescript