当前位置: 首页 > 知识库问答 >
问题:

在阵列上循环并以下拉方式显示-角度

敖子安
2023-03-14

所以-我有一组数据如下:

people = [
    {
      name: "Bob",
      age: "27",
      occupation: "Painter"
    },
    {
      name: "Barry",
      age: "35",
      occupation: "Shop Assistant"
    },
    {
      name: "Marvin",
      age: "42",
      occupation: "Mechanic"
    },
    {
      name: "Arthur dent",
      age: "27",
      occupation: "Human"
    },

然后,我的html中也有一个下拉列表,如下所示-

<select id='peeps' name='people'>
    <option></option>    
</select>

<div class='show-info'></div>

这都是在一个组件中,我试图做的是在人员数组中循环,用他们的名字填充选项,当你在下拉列表中选择那个人时,他们的信息会显示在div中。我已经尝试过开始这个过程,但我遇到了一些问题。

我开始这么做-

peepsSelect = document.getElementById("peeps") as HTMLElement;
populationDropdown() {
  for(var i = 0; i < this.people.length; i++) {
    var option = document.createElement("option");
    option.text = this.people[i].name;
    option.value = this.people[i].name;
    option.value = this.people[i].age;
    option.value = this.people[i].occupation;
    this.peepsSelect.add(option);
 } 
}

但是,我收到了错误消息,比如“类型HtmleElement上不存在add”。

共有3个答案

郦祺
2023-03-14

在这种情况下,您需要使用appendChild。而且,就我而言,一个选项的值应该是唯一的,并且只在该元素中使用一次,所以在这种情况下,您将覆盖它;它应该是那个人的唯一标识符,比如id。试试这个:

peepsSelect = document.getElementById("peeps") as HTMLElement;
populationDropdown() {
  for(var i = 0; i < this.people.length; i++) {
     var option = document.createElement("option");
     option.text = this.people[i].name;
     option.value = this.people[i].name;
     peepsSelect.appendChild(option);
  } 
}

编辑:我刚看到标签上有棱角。如果这实际上是角度代码,那么你使用的角度是错误的。

鞠自明
2023-03-14

这不是Angular的真正做事方式。您应该使用双向数据绑定来完成此操作。此外,您可以使用ngValue来跟踪绑定到选项元素的值。与value绑定不同,ngValue可用于绑定到字符串值和对象。

<select [(ngModel)]="selected">
  <option *ngFor="let person of people" [ngValue]="person">{{person.name}}</option>
</select>

<div class='show-info'></div>

在你的部件上。ts,您需要定义以上属性

export class AppComponent  {
  selected;
  people =[
    {
      name: "Bob",
      age: "27",
      occupation: "Painter"
    },
    {
      name: "Barry",
      age: "35",
      occupation: "Shop Assistant"
    },
    {
      name: "Marvin",
      age: "42",
      occupation: "Mechanic"
    },
    {
      name: "Arthur dent",
      age: "27",
      occupation: "Human"
    }
  ]
}

我在这里制作了一个演示。

慕铭
2023-03-14

尝试这样:

工作演示

<select id='peeps' name='people' [(ngModel)]="peepsSelect">
    <option *ngFor="let item of data" [value]="item.name">
      {{item.name}}
    </option>    
</select>
 类似资料:
  • 我有下表 我想使用python将int转换成矩阵,看起来像下面这样: 我能知道从哪里开始吗?我使用pandas读取两个数据帧并合并它们以创建我所显示的初始表(一个有两列)。 我使用的代码如下: 打印输出为: 索引(['列B'], dtype='对象')索引(['TypeA','TypeA','TypeA','TypeA','TypeA','TypeB','TypeB','TypeC','TypeC

  • 我有一个按钮,点击时会增加更多的下拉选择。因此,我想删除这些选择框中已经选定的选项。 下面是我的component.html代码下拉选择 这是我的组件。ts代码 这是我的堆栈闪电战演示 https://stackblitz.com/edit/angular-wppi9b?file=src/app/app.component.html

  • 问题内容: 我已将dsl作业配置为删除未引用的作业,并且我想保留以下内容: 我试图做到这一点: Jenkins创建job1,但是在创建job2时将其删除。如何遍历列表以创建多个作业? 也许我可以构建multibranchPipelineJob objs和listView.jobs的映射/闭合,然后以某种方式将其传递给dsl? 问题答案: 我愚蠢的工作本身实际上已经创建好,只是列表视图代替了他们。之

  • 我有一个正在使用角度绑定填充的select。 现在,我想在这个选择上应用剑道下拉列表样式,但我不想使用剑道数据源等填充选项,并继续使用angular。 如果我使用$('optbuckes')。kendoDropDownList()然后我应用了所需的样式,但绑定数据丢失。 任何帮助,以解决这是高度赞赏。

  • 问题内容: 问题很容易,我想遍历列表的每个元素和成对的下一个(将最后一个与第一个包裹在一起)。 我考虑过两种非Python的方法: 和: 预期输出: 关于这样做的更pythonic方式的任何建议?也许有一个我没有听说过的预定义功能? 同样,更一般的n折(三重奏,四重奏等代替对子)也可能很有趣。 问题答案: 我已经编写了元组通用版本的代码,我喜欢第一个版本,因为它非常简洁,我看的越多,对我的感觉就越

  • 我试图理解数组加法CoderByte问题的解决方案中的逻辑。这是问题提示——“使用JavaScript语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组并返回字符串true,如果数组中的任何数字组合可以加到等于数组中的最大数字,否则返回字符串false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应该返回true,因为4 6 10 3 = 23。