SampleDataController:
[HttpGet("GetAllItems")]
public async Task<IActionResult> GetAllItems()
{
return Json(await _storeContext.Table.AsQueryable().ToListAsync());
}
DataService:
export class DataService {
constructor(private http: HttpClient) { }
GetAllItems() {
return this.http.get("https://localhost:44381/api/SampleData/GetAllItems");
}
}
Компонент:
import { Component } from '@angular/core';
import { DataService } from '../store.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public itemsList: Item[];
constructor(private logger: DataService) {}
GetItems() {
this.logger.GetAllItems().subscribe(
data => this.itemsList = <Item[]>JSON.parse(JSON.stringify(data))
)
}
}
export interface Item {
Id: number;
Name: string;
Surname: string;
}
Компонент html:
<button mat-button (click)="GetItems()">GetItems!</button>
<li *ngFor="let item of itemsList">
<span>
<br />
{{item.Name}}
<br />
{{item.Surname}}
</span>
</li>
После нажатия на кнопку GetItems()
возвращает массив объектов.Я думал, что data => this.itemsList = <Items[]>JSON.parse(JSON.stringify(data))
должен привести к массиву Item
, и я должен получить Item[]
массив.Как правильно преобразовать JSON в типизированный массив в TypeScript?
Пример данных Json:
[
{
"id": 3,
"name": "1",
"surname": "2 "
},
{
"id": 4,
"name": "1",
"surname": "2 "
},
{
"id": 5,
"name": "1",
"surname": "2 "
},