Мне нравится просматривать детали, которые считываются из json-файла.
Это код:
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
import gamejson from '../../assets/data/gametest.json';
interface GAMEDETAIL {
id: number,
title: string
}
@Component({
selector: 'app-game',
templateUrl: './game.component.html',
styleUrls: ['./game.component.css']
})
export class GameComponent implements OnInit {
gamedetail: GAMEDETAIL[] = gamejson; <<<<<<----- here is the error on gamedetail
gameid: number = 0;
constructor(private route: ActivatedRoute) {
}
ngOnInit(): void {
this.gameid = parseInt( this.route.snapshot.paramMap.get('id') as string );
}
}
Но у меня такая ошибка:
Typescript: в типе "{id: number; title: string; }" отсутствуют следующие свойства из типа "GAMEDETAIL[]": длина, всплывающее окно, push, concat и еще 26.
Файл json короткий
{
"id": 1,
"title": "Ligretto"
}
Можете ли вы сказать мне, где моя ошибка?
2 ответа
Тип GAMEDATAIL должен быть таким:
interface GameDetail {
id: number;
title: string;
}
И вы должны объявить свой атрибут в своем компоненте следующим образом:
gameDetail: GameDetail;
Если вам нужен массив объектов, вам нужно создать массив json;
gameDetailArray: GameDetail[] = [];
И сделайте что-то вроде этого:
this.gameDetailArray.push(this.gameDetail);
Вы определяете gamedetail как массив типа GAMEDETAIL
.
gamedetail: GAMEDETAIL[]
Но затем вы устанавливаете его как простой объект:
{
"id": 1,
"title": "Ligretto"
}
Итак, вам нужно поместить его в массив:
[{
"id": 1,
"title": "Ligretto"
}]
Новые вопросы
angular
Вопросы по Angular (не путать с AngularJS), веб-фреймворку от Google. Используйте этот тег для угловых вопросов, которые не относятся к конкретной версии. Для более старой веб-платформы AngularJS (1.x) используйте тег angularjs.
gamedetail
типа array. Попробуйтеgamedetail: GAMEDETAIL = gamejson
.