javascript - Angular 下拉菜单从硬编码数据切换到来自服务的实时数据

标签 javascript arrays angular typescript

我有一个 Angular 5 下拉列表,可以很好地处理硬编码数据,但我需要将其切换为实时数据。问题是实时数据是普通数组。

这是目前有效的

HTML

<select...
  <option *ngFor="let activityType of activityTypes" [ngValue]="activityType.Id">
        {{activityType.Activity}}
  </option>

typescript 组件

activityTypes: any[];

this.activityTypes = [
        { Id: 1, Activity: "Select One" },
        { Id: 2, Activity: "Insert" },
        { Id: 2, Activity: "Update" },
        { Id: 3, Activity: "Delete" },          
];

但是,这是我的问题,我从服务中提取数据,数据看起来像这个数组

this.activityTypes v["INSERT", "UPDATE"]
                      0: "INSERT"
                      1: "UPDATE"

click to see dev tool image output

现在,如何使用数组绑定(bind)到下拉列表? 显然,我希望将值设置为数组的“0”、“1”.. 然后是显示(这是我在硬编码示例中的事件)我希望它保持“插入”和“更新”.. .

最佳答案

你可以使用数组索引作为选项的值,数据作为标签

<select...
  <option *ngFor="let activityType of activityTypes; let i = index" [ngValue]="i">
        {{activityType}}
  </option>

解决方案 2:您可以创建对象数组:

this.activityTypes = this.activityTypes.map((currElement, index) => {
  let obj = {
    Id: index,
    Activity: currElement
  };
  return obj;
});

关于javascript - Angular 下拉菜单从硬编码数据切换到来自服务的实时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50641432/

相关文章:

json - 使用 HttpClientModule 在 Angular 2/4 中反序列化 json

javascript - Angularjs 模板 grunt-angular-templates 生成的缓存路径

javascript - 如何从 javascript/jquery 中的复选框获取 bool 值?

java - 字符串数组到带有格式的字符串

javascript - 使用数组作为排序顺序

angular - 使用 createReducer 函数时为生产构建 angular+ngrx 8 时出错

javascript - Google map 添加新标记时为什么会重绘整个页面

javascript - 从字符串中转义点,但在某些键旁边留下带有点的单词

javascript - 循环两个不同长度的数组,并正确排序输出

Angular 垫表 - 让点击事件工作