Hur man läser data från .json-fil i TypeScript
Jag har en json-fil i mappen assets som heter data.json
{
"response": {
"sales_amount": 0,
"collection_amount": 0,
"carts_amount": 736.63,
}
}
Jag gör så här för att få data i service.ts-filen
my_data: any;
public getResponseData() : Promise<any> {
if(typeof(this.my_data) === "undefined") {
return this.http.get('assets/data.json')
.toPromise().then(res => {
this.my_data = res.json().response;
return this.my_data;
}).catch(this.handleError);
} else {
return Promise.resolve(this.my_data);
}
}
Här får jag svar i detta.my_data, men i component.ts-filen gör jag så här
ngOnInit(){
this.myService.getResponseData().then(response => this.detailsdata = response);
}
men här i denna.detailsdata får jag ingenting.
och efter detta vill jag visa sales_amount,collection_amount i html-filen.
<div>
<span>sales amount</span>
</div>
I stället för försäljningsbeloppet vill jag visa värdet, hur gör man detta. Jag är väldigt ny på TypeScript. Kan någon snälla hjälpa mig med detta.
Svar #1
Din kod ser korrekt ut. Jag kollade precis det i testapplikationen. Det du behöver är bara några rader kod i HTML-filen.
Vänligen lägg till följande kod i din HTML-fil.
<p><b>sales amount:</b> {{ detailsdata?.sales_amount }}</p>
<p><b>collection amount:</b> {{ detailsdata?.collection_amount }}</p>
<p><b>carts amount:</b> {{ detailsdata?.carts_amount }}</p>
Förresten, din json-data är ogiltig. Ta bort kommatecknet efter carts_amount-egenskapen.
{
"response": {
"sales_amount": 6000.77,
"collection_amount": 399.57,
"carts_amount": 736.63
}
}
Uppdateringar :
ngOnInit(): void {
this.myService.getResponseData().then((value) => {
//SUCCESS
console.log(value);
this.detailsdata = value;
}, (error) => {
//FAILURE
console.log(error);
})
}
