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()
方法foretranslateModes
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未定义”