【发布时间】:2020-05-19 19:32:03
【问题描述】:
我创建了一个数据列表,其标签的格式为:“城市名称(城市代码)”
<!-- Sélecteur de communes du COG -->
<input type="text" list="communesCOG" [(ngModel)]="commune" (click)="selectCodeCommune(commune)">
<datalist id="communesCOG" >
<option *ngFor="let commune of communes | keyvalue"
[value]="commune.value.codeCommune"
[label]="commune.value.nomCommune + ' (' + commune.value.codeCommune + ')'">
</option>
</datalist>
但是:
[label]="commune.value.nomCommune + ' (' + commune.value.codeCommune + ')'"
让我失望。根据String.Format not work in TypeScript,我可以改用string.format(...)。
我试过了,但没有成功(被拒绝):
[label]="'{0} ({1})'.format(commune.value.nomCommune, commune.value.codeCommune)"
在带有 Angular 的 HTML 属性上使用 format(...) 函数的正确方法是什么?
【问题讨论】:
-
你试过使用 TypeScript 的字符串插值吗?
-
@Bozhinovski :它似乎不起作用。你有这个案例的工作样本吗?
-
这对我来说看起来是正确的:[label]="commune.value.nomCommune + ' (' + commune.value.codeCommune + ')'"。这是什么管道:键值?您可以尝试删除此管道:“| keyvalue”吗?
-
它有效,但不符合国际化要求。稍后,页面可能会显示:“Commune : Brest, (29056)”或:“City : Brest (29056)”,具体取决于用户的语言。这就是为什么声明必须更改为
textFormat.format(arg1, arg2)之类的内容。管道键值在这里是因为我正在读取要从 Map 中显示的值。 -
label="{{commune.value.nomCommune}} ({{commune.value.codeCommune}})"肯定会与 Angular 的原生 i18n 一起使用,如果这是您关心的话。您将能够从翻译文件中将实际显示的文本更改为您想要的任何内容
标签: html angular typescript