如何将本地JSON读入Angular typescript文件

如何将本地JSON读入Angular typescript文件,json,angular,typescript,primeng,Json,Angular,Typescript,Primeng,我用的是Priming Datepicker。它的[locale]属性接受我存储在名为datePickerLanguages.json的本地json中的语言: { "DatePickerLanguages": [{ "spanish": { "firstDayOfWeek": 1, "dayNames": ["d

我用的是Priming Datepicker。它的
[locale]
属性接受我存储在名为
datePickerLanguages.json的本地json中的语言:

{
    "DatePickerLanguages": [{
            "spanish": {
                "firstDayOfWeek": 1,
                "dayNames": ["domingo", "lunes", ...],
                "dayNamesShort": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
                "dayNamesMin": ["D", "L", "M", "X", "J", "V", "S"],
                "monthNames": [
                    "Enero",
                    "Febrero",
                    ...
                    "Diciembre"
                ],
                "today": "Hoy",
                "clear": "Borrar"
            }
        },

        {
            "german": {
                "firstDayOfWeek": 1,
                "dayNames": ["Sonntag", "Montag",...]
                ...
                "today": "Heute",
                "clear": "Klar"
            }
        }
    ]
}
我必须将
西班牙语
德语
或任何其他语言(一次一种语言)输入
p-calendar的
[locale]=xxxxx
。我的打字稿是:

import { Component, OnInit, VERSION } from "@angular/core";
import languages from "./datePickerLanguages.json";

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
  name = "Angular " + VERSION.major;

  value;

  languageList: {}[] = languages;

  selectedLocale;

  ngOnInit() {
    this.selectedLocale = this.languageList.spanish;
  }
}
模板文件:

<p-calendar [(ngModel)]="value" name="test" [locale]="selectedLocale">
</p-calendar>

我得到:

类型“{}[]”上不存在属性“西班牙语”

这就是我所遵循的:

这是你的电话号码

请指出我的错误。

试试这个:

languageList: {
    'DatePickerLanguages'
  }  = languages;

ngOnInit() {
    this.selectedLocale = this.languageList.DatePickerLanguages[0].spanish;
}
如果您可以控制JSON文件。我建议您修改JSON,如下所示:

{
    "DatePickerLanguages": {   // Initialized it as object instead of array. 
            "spanish": {
                  ....
            },
            "german": {
                  ....
            }
    }
}
并通过以下方式访问西班牙语:

this.selectedLocale = this.languageList.DatePickerLanguages.spanish;
根据您评论中的要求:


在我的回答中使用第0个索引的原因是,在JSON中,
“DatePickerLanguages”:
是一个数组
[]
。属性
spanish
位于数组的第0个索引中。

wow这很有效。但是请解释为什么要使用第0个索引?我可以用JSON的方式来做一些不需要
[0]
的更改吗。因为我的教学领导不会喜欢这种方法。