我正在嘗試使用服務在 Angular 中獲取 JSON 資料,并且我正在使用 HttpClient 使用該get()方法獲取資料。問題是我正在使用 Promise 并且該函式正在回傳一個帶有值的承諾。
我在控制臺中列印了值并回傳:
ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)} 控制:(22) [{…}, {…}, {…}, {…}, {…}, {…}, {…},}

這是服務代碼:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable,of, interval, firstValueFrom } from 'rxjs';
import { Component, OnInit,Input } from '@angular/core';
import { FormGroup, FormControl, FormArray, FormBuilder, Validators } from '@angular/forms'
import {STEPPER_GLOBAL_OPTIONS} from '@angular/cdk/stepper';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class DataService {
controls:any=[]
constructor(private http: HttpClient) {
this.controls=this.getControlsData()
}
public async getControlsData():Promise<any> {
console.log(firstValueFrom( (this.http.get("../assets/json/controlsData.json"))))
return await firstValueFrom( (this.http.get("../assets/json/controlsData.json")))
}
public addControl(): Observable<any> {
return this.http.get("../assets/json/controlsData.json");
}
}
零件:
ngOnInit() {
this.data=this.DataService.getControlsData()
}
uj5u.com熱心網友回復:
要么使ngOnInit()方法異步。
async ngOnInit() {
this.data = await this.DataService.getControlsData();
}
或者在回呼期間通過Promise.then().
ngOnInit() {
this.DataService.getControlsData().then((response: any[]) => {
this.data = response;
});
}
或者建議不使用Promise但回傳一個observable,因此您的組件訂閱observable (如果您能夠選擇不堅持使用,取決于您的用例Promise)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495094.html
標籤:有角度的 打字稿 异步等待 角度承诺 角httpclient
