首页 > 解决方案 > 在json数据中动态搜索

问题描述

我在这里尝试的是使用我从路由中读取的变量来确定从 json 中使用哪个博客。json 文件是一组部分,其中还包含一组博客。

this.blog=data[this.id1].blogs[this.id2];如果我将 id1 和 id2 作为 1, 2 放在该行中,则代码运行完美,

我收到一个TypeError:_data_json__WEBPACK_IMPORTED_MODULE_2___namespace[this.id1] is undefined没有变化的错误。

import { Component, OnInit } from '@angular/core';
import * as data from '../data.json';
import { Router, ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-post',
  templateUrl: './post.component.html',
  styleUrls: ['./post.component.css']
})
export class PostComponent implements OnInit {
  id1;
  id2;
  sub;
  blog;
  
  constructor(
    private _Activatedroute: ActivatedRoute, 
    private _router: Router
  ) {}
  
  ngOnInit() {
    this.sub = this._Activatedroute.paramMap.subscribe(params => {
      console.log(params);
      this.id1 = Number(params.get('id1'));
      this.id2 = Number(params.get('id2'));
      this.blog = data[this.id1].blogs[this.id2];
    });
  }
}

同样在用任何变量替换 id1、id2 时,我得到了同样的错误。

编辑:我改变了import * as data from '../data.json';const data=require('../data.json');我得到了正确的结果。但是,我仍然不明白为什么会发生这种情况,并且想保持同样的问题。

标签: jsonangulartypescript

解决方案


尝试使用下面写的行

this.blog = data[+this.id1].blogs[+this.id2];

推荐阅读