angular - Angular:将字符串从组件映射到模板
问题描述
假设我有一个返回列表 ob 对象的服务。
[
{item: 'box', price: 10, state: 'N'},
{item: 'toy', price: 15, state: 'U'},
{item: 'ink', price: 20: state: 'O'}
]
在 webapp 中,我喜欢将状态映射到可读文本。我会在我的组件中放置一个地图并在模板中使用它。
零件
map = new Map ([
[ "N", "new in stock" ],
[ "U", "used but ok" ],
[ "O", "out of stock" ]
]);
模板
<tr *ngFor="let d of data">
<td>{{ d.item }}</td>
<td>{{ map.get (d.state) }}</td>
</tr>
我不确定那是最好的策略。它简单易行,但我更喜欢与模板(视图)而不是组件(控件)相关的方式。
我可以想到一个可以翻译的管道,但对于那个简单的问题来说,这可能有点过头了。
感谢您的建议和意见。
解决方案
您可以像这样创建一个简单的对象:
TS:
map = {
N: "new in stock",
U: "used but ok",
O: "out of stock"
}
HTML:
<tr *ngFor="let d of data">
<td>{{ d.item }}</td>
<td>{{ map[d.state] }}</td>
</tr>
或者创建一个带有 switch case 的简单函数来返回全文。
试试这样:
HTML:
<tr *ngFor="let d of data">
<td>{{ d.item }}</td>
<td>{{ getFullText(d.state) }}</td>
</tr>
TS:
getFullText(abb:string) {
switch(abb) {
case "N":
return "new in stock";
case "U":
return "used but ok";
case "O":
return "out of stock";
}
}
推荐阅读
- python - ValueError:使用 seaborn 时缓冲区的维数错误(预期为 1,得到 2)
- java - Javax 验证未捕获 POJO 的内部字段
- python - python子进程多次提供输入和读取输出[windows]
- node.js - TypeScript 生成错误
- angular - 在 Ionic GET 请求中设置自定义标头问题
- javascript - 如何在 Javascript 中制作具有一定数量列的表?
- opengl-es - OpenGL透明背景
- javascript - 我需要从网站上的动态表中提取数据,我想使用 Jsoup (Java)
- javascript - 在不使用 event.preventDefault 的情况下防止 html5 表单提交
- android-studio - 我无法在我创建的 android studio 中打开我的模拟器