Angular 在<;中用逗号而不是点显示数值;p柱>;棱角分明

Angular 在<;中用逗号而不是点显示数值;p柱>;棱角分明,angular,typescript,numbers,primeng,Angular,Typescript,Numbers,Primeng,在我的模板中,我想用逗号作为十进制分隔符而不是点来显示(数字类型)的值。我有: <p-column field="power" header="Power [MW]" [editable]="true"> <ng-template let-col let-data="rowData" pTemplate="editor"> <div> <input type="text" [(ngModel)]="data[col.field]"

在我的模板中,我想用逗号作为十进制分隔符而不是点来显示(数字类型)的值。我有:

<p-column field="power" header="Power [MW]" [editable]="true">
  <ng-template let-col let-data="rowData" pTemplate="editor">
    <div>
      <input type="text" [(ngModel)]="data[col.field]" numbersOnly digits="35" decimals="3">
    </div>
  </ng-template>
  <ng-template let-col let-data="rowData" pTemplate="body">
    <div>
      <span>{{ data[col.field] }}</span>
    </div>
  </ng-template>
</p-column>

{{data[col.field]}

但这会显示带有点的数字,如编辑器和显示模式中的“10.3”。我需要的是用逗号显示值,如“10,3”。我该怎么做呢?

你只需写一个角度过滤器就可以了,就像我在小提琴中提到的那样,它可以用逗号代替圆点

注意:现在我使用了一个静态值来演示。可以将其替换为原始模型值

var-app=angular.module('myapp',['angular.filter']))
app.controller('myController',['$scope',函数($scope){
$scope.my_modal=0;
}])
app.filter('replaceWithComma',函数(){
返回函数(文本){
如果(文本!=未定义){
var str=text.toString().replace(“.”,“,”);
返回str;
}
};
});

{{my_modal | replacetwithcomma}}

还可以使用静态值进行检查:
{{10.30 |用逗号替换}
我不得不用一个应用程序来解决这个问题,该应用程序从SAP接收所有数据,数据格式为
,而不是
。这是我为解决这个问题而制作的管道,它比使用

并在模板中使用它,如下所示:

{{ data[col.field] | numberFormat }}
declarations: [NumberFormatPipe]
或在您的组件中

constructor(private format: NumberFormatPipe) {}
...
let result = this.format.transform(some_number);
别忘了导入并添加到模块声明中:

{{ data[col.field] | numberFormat }}
declarations: [NumberFormatPipe]

提醒一下,这个管道还包含一些检查小数的代码,因为在我的例子中,我得到了带小数和不带小数的值,在某些情况下,最多有7个小数,所以您可以按原样使用它或根据需要编辑它。。。但我猜这至少会为您指明正确的方向。

您可以随时将输入字段类型更改为数字

  <input type="number" [(ngModel)]="data[col.field]" numbersOnly digits="35" decimals="3">
然后可以强制angular使用特定的区域设置

app.module.ts(适用于瑞典地区)


现在,所有数字都神奇地用“,”表示,如果您将其绑定到您的模型,它将可以绑定到数字类型的字段,而不会出现任何问题

我建议使用自定义管道根据您的需要重新格式化您的值,请看这里:谢谢。管道在显示模式下运行良好,但如何将其连接到编辑模式?请看这里:非常感谢tomichel,这对我很有帮助!哦,SAP,我有多讨厌它这是angular 2及以上,不是angular js。
import localeSv from '@angular/common/locales/sv';
import localeSvExtra from '@angular/common/locales/extra/sv';
registerLocaleData(localeSv, 'sv-SE', localeSvExtra)