Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Typescript[Angular]外部化字符串_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 如何使用Typescript[Angular]外部化字符串

Javascript 如何使用Typescript[Angular]外部化字符串,javascript,angular,typescript,Javascript,Angular,Typescript,我在做一个有角度的项目。我已经创建了一个自定义的月份选择器组件。一切都很好。但现在,我的大四学生告诉我,所有月份的名字都要外传,因为我们以后可能会改用俄语或法语。因此,我现在从外部json文件assets/i18n/en US.json读取月份名称。我正在使用TranslateService。我已在此处设置了所有内容:。请告诉我有什么问题。还有一件事,如果我将月份数组硬编码为: ngOnInit(): void { ... this.months = ['Jan', 'Feb', 'Mar'

我在做一个有角度的项目。我已经创建了一个自定义的
月份选择器
组件。一切都很好。但现在,我的大四学生告诉我,所有月份的名字都要外传,因为我们以后可能会改用俄语或法语。因此,我现在从外部json文件assets/i18n/en US.json读取月份名称。我正在使用
TranslateService
。我已在此处设置了所有内容:。请告诉我有什么问题。还有一件事,如果我将月份数组硬编码为:

ngOnInit(): void {
 ...
 this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', ..., 'Sep', 'Oct', 'Nov', 'Dec'];
 ...
}

然后它工作得很好。但当我将它们外部化时就不是了。请提供帮助。

代码中唯一的错误是调用
this.initMonthsDataState()
方法fore
translateModes
finish并设置月份名称,因此简单的解决方案是

this.translateModes((data)=>{
 this.initMonthsDataState();
});
但我建议添加
管道直接翻译成HTML,如下所示

// Initialize months with translate directly and use it in HTML

<div>{{ x.monthName | translate }}</div>

months=[
       'Monthpicker.Months.January',
        'Monthpicker.Months.February',...]


initMonthsDataState() {
    this.monthsData = new Array();
    this.years.forEach(year => {
        this.months.forEach(month => {
            this.monthsData.push({
                monthName: month,
                monthYear: year,
                isInRange: false,
                isLowerEdge: false,
                isUpperEdge: false
            });
        });
    });
//使用translate直接初始化月份并在HTML中使用
{{x.monthName | translate}}
月份=[
“月比克,月,一月”,
“月、月、二月”,…]
initMonthsDataState(){
this.monthsData=新数组();
此.years.forEach(年份=>{
this.months.forEach(月=>{
此为.monthsData.push({
月名:月,
月:年,
isInRange:错,
isLowerEdge:错,
isUpperEdge:错误
});
});
});

你在哪里尝试将字符串国际化?你没有在任何地方使用翻译管道。++你的stackblitz中的代码太多了。你能清理一下,只包含与问题相关的代码吗?嗨,尼古拉斯。很高兴见到你。我完成了你的一个项目。我正在monthpicker.component.ts中进行,但我不想使用管道。是否仍然可以使用管道进行此操作。因为HTML文件不在我的控制范围内。其他人正在编写此文件。是的,你可以。但是代码太多了。你到底想做什么?请编辑你的问题以解释相同的问题。
this.translateModes((数据)=>{this.initMonthsDataState();});
类似于控制台上的内容:错误类型错误:“\u co.monthData未定义”