【问题标题】:Angular2/Typescript - property name first letter changes from lower to upper caseAngular2/Typescript - 属性名称的第一个字母从小写变为大写
【发布时间】:2017-09-17 01:57:25
【问题描述】:

我是 Angular2/Typescript 的菜鸟,我正在编写我的第一个应用程序。

我有一个这个简单类的数组:

export class OffertRegion {
    
    public idOffert: number;
    public idOffertRegion: number;
    public Region: string;
    public intOrder: number;
    
    constructor(values: Object = {}) {
        Object.assign(this, values);
    }
}

一旦用户单击放置在 html 组件页面中的按钮,这个函数就会将新的 OffertRegion 类推送到数组:

do_addRegion()
  {
    var r = new OffertRegion();
    r.Region = this.FormOffertDetail.value.RegionName;
    alert(r.Region);
    r.idOffert = this.offert.idOffert;

    this.offert.Regions.push(r);
    console.log(this.offert.Regions);
  }

如果我加载带有 3 个区域 的示例并执行 do_addRegion(),则记录的 this.offert.Regions 结果如下:

Console.Log 输出

如您所见,OffertRegion 类的预览项目具有第一个字符为小写的 Region 属性。 相反,新项目(位置 4)具有第一个字符为大写的属性...

当我在 html 模板中渲染数据时,这给我带来了一些麻烦。

为什么会这样?以及如何以正确的方式解决它?

谢谢

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    我只能从您提供的稀疏信息中猜测。我假设前三个对象是从服务器加载的,该服务器使用以小写字母开头的名称。他们以某种方式使其进入数组而不符合 Typescript 类型。然后运行do_addRegion,它创建了一个只有两个属性的实例,其中一个的名称以大写字母开头。

    您的 Typescript 类型有点奇怪:它具有三个名称以小写字母开头的属性和一个名为 Region 的奇数属性。用小写名称命名会更一致:

        public region: string;
    

    要深入研究问题,您应该显示加载或创建数组中前三个条目的代码。

    【讨论】:

    • 你明白了!前 3 个元素是从调用 .Net 编写的 webapi 的 post/subscribe 加载的。 webapi是否将属性的第一个字符转换为小写...
    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多