Мне нравится просматривать детали, которые считываются из 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"
  }

Можете ли вы сказать мне, где моя ошибка?

-1
Miracle Johnson 4 Фев 2022 в 11:58
1
Файл JSON содержит только объект, но вы определяете переменную gamedetail типа array. Попробуйте gamedetail: GAMEDETAIL = gamejson.
 – 
Michael D
4 Фев 2022 в 12:01
Большое спасибо за это
 – 
Miracle Johnson
4 Фев 2022 в 12:01

2 ответа

Тип GAMEDATAIL должен быть таким:

interface GameDetail {
  id: number;
  title: string;
}

И вы должны объявить свой атрибут в своем компоненте следующим образом:

gameDetail: GameDetail;

Если вам нужен массив объектов, вам нужно создать массив json;

gameDetailArray: GameDetail[] = [];

И сделайте что-то вроде этого:

this.gameDetailArray.push(this.gameDetail);
0
Andy88 4 Фев 2022 в 12:42

Вы определяете gamedetail как массив типа GAMEDETAIL.

gamedetail: GAMEDETAIL[] 

Но затем вы устанавливаете его как простой объект:

{
 "id": 1,
 "title": "Ligretto"
}

Итак, вам нужно поместить его в массив:

[{
 "id": 1,
 "title": "Ligretto"
}]
0
akkonrad 4 Фев 2022 в 12:01