Angular 在单行中给出了一个下拉数组以及如何获得选择返回?

克里斯·T

我有一个数组,我想在下拉列表中传递它并选择用户在提交和返回时选择的内容

HTTP 调用返回此结构

 [
    "3/cat",
    "1/apple",
    "2/boy",
    "5/egg"
    "4/dog",
 ]

怎么定义的。。

//defined in a different file
    export class SchemaConfig {
        ....
        ....
        items: string[];
    }

//defined in main file
    export class ListCall implements OnInit {
      items: SchemaConfig[];
    
  ngOnInit() {
   ....
    this.getlist();
  }

 getlist() {
    this.loading = true;
    this.httpcall.getlist()
          .subscribe(
            results => {
            this.items = [];
            let items = new SchemaConfig();
            items = results;

            items.sort(function(a, b) {
              return a.localeCompare(b);
              
            });

            this.items.push(items);
            
          });
      }
}

这就是我在 HTML 中定义的方式

<select>
  <option *ngFor="let t of items">
  {{ t }}
  </option>
  </select>

当它显示时,它是一个单一下拉列表的长列表

1/苹果,2/男孩,3/猫,4/狗,5/蛋

当我选择一个特定的数组时,它会单独显示

   <select>
      <option *ngFor="let t of items">
      {{ t[0] }}
      </option>
      </select>

1/苹果

问题

  1. 如何让项目分别在每个元素的下拉列表中列出?
  2. 请让我知道我可以在上面纠正的所有内容以使其变得更好。
  3. 当项目被选中时,我需要捕获它并通过 postResult() 方法传递值,该方法正在执行 http 调用(该调用类似于 this.httpcall.getlist() 但需要将值传递回 this.httpcall。 postResult(结果)
E. Maggini

这是一个堆栈闪电战,它说明了您的代码的潜在问题:

你的错误是这一行:

this.items.push(items);

您正在将一个数组推入一个数组:

this.items.push([
    "1/apple",
    "2/boy",
    "3/cat",
    "4/dog",
    "5/egg",
]);

这给你留下了结构:

[[
    "1/apple",
    "2/boy",
    "3/cat",
    "4/dog",
    "5/egg",
]]

当这个外部数组被迭代时,它会给你留下一个逗号分隔的内部数组表示。

正如您所发现的,您可以直接访问内部数组。

我会像这样更改您的代码:

getlist() {
    this.loading = true;
    this.httpcall.getlist()
          .subscribe(
            results => {
         
            results.sort(function(a, b) {
              return a.localeCompare(b);
              
            });

            this.items = results;
            
          });
      }

您对数据类型的工作方式也存在误解。

您的 SchemaConfig 类定义为:

export class SchemaConfig {
  items: string[];
}

但是您正在尝试分配一个 schemaConfigs 数组,而实际上您应该有一个包含一组项目的单个数组。

然后不要忘记为您的选项添加一个值:

<option *ngFor="let t of mySchemaConfig.items" [value]="t">

然后,您将能够使用 ngModel 或响应式表单通过您选择的 https 服务进行发布。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我正在尝试从 angular js 中的 http 请求返回一些数据,但它给出了一个未定义的

选择数组angular 7 safari第一个索引的下拉值默认值

如何停止Angular 8/9中的Material下拉列表自动完成选择触发另一个搜索查询?

在 angular7 中,如何从 2 个不同的依赖 http 调用获得组合响应。第一个 http 调用返回一个对象数组和其他相关数据

Angular 7 和将两个数组推入一个数组的数组给出了未定义的错误

不允许在 Angular 中选择下拉列表中的另一个值

Angular FormGroup FormArray-从下拉列表中仅提交数组中的一个对象

在下拉列表中放置一个文本“选择选项”,然后在 Angular 中清理下拉列表

Angular $ HTTP Post方法仅在PHP中获得一个数组值

Angular给出一个奇怪的模板

Angular 8使用发射订阅了一个发射事件,给出了未定义的ON方法错误

如何在Angular中将数组从一个服务注入到另一个服务的数组中

如何从 JSON - Angular 2 中选择一个元素

如何在angular2中获得多选下拉选择值

如何通过单击 Angular 7 中的按钮获得下拉选择的选项

如何使用on select方法使用Angular填充另一个选择中的项目列表

Angular - 如何在 Dynamic FormArray 中只允许选择一个复选框

在 Angular 8 中更改另一个下拉列表时更新下拉值

angular 2+ 强制在下拉列表中选择第一个项目

根据来自另一个非相关组件 Angular 的下拉选择更改数据

从Angular中的另一个组件访问数组

在 Angular/Firebase 的数组对象中添加一个对象

如何从样本数据中返回一个Observable [Angular]

如何在Angular 6中创建一个从URL返回queryParams的方法?

Angular 6 如何将一个组件中的数组传递给另一个组件

如何在单击angular / javascript中的按钮时将数组的特定键值一个接一个地推入另一个数组

Angular 如何从另一个数组填充一个数组

Angular 6:从另一个数组中获取一个数组

如何从Angular中的另一个对象过滤基于属性的对象数组?