【问题标题】:Setting value of Select - Angular 2Select - Angular 2 的设置值
【发布时间】:2018-06-18 05:46:38
【问题描述】:

我必须使用JSON 文件设置我的选择的option 值。 Object 如下:

export class Car {
  ID: String;
  Name: [{
    confName: String
    }
  }]
}

我正在尝试使用以下代码进行设置:

this.baseService.getCars(message)
    .subscribe(cars => {
    this.cars = cars;
    myCars = this.cars; //Car is a global variable
    });

var $el = $("#carSelect");
$el.empty(); // remove old options
$.each(myCars, function (key, value) {
$el.append($("<option></option>")
    .attr("value", value).text(key));
});

我知道要访问其中之一的confName,我需要使用console.log(myCars[0].Name.confName);,所以错误可能在这里:

 $.each(myCars

因为我需要访问Name 才能获得value,keyconfName 我想为每个each做它

【问题讨论】:

  • 必须使用jquery吗?
  • JQuery 或 Javascript。使用 HTML 我有一些我无法解决的问题
  • @MarioLópez 以这种方式使用 Jquery 完全违背了像 Angular 这样的数据驱动方法的目的。
  • 在 Angular 中使用 jQuery 有点不道德。这只是破坏了 Angular 的全部目的。

标签: javascript jquery angular select


【解决方案1】:

停止使用 JQuery !

这适得其反:您正在使用一个可以让您的生活变得如此轻松的高级平台,但您安装了另一个库来完成它应该做的事情。

不仅会加载不必要的代码,还会降低应用程序的速度并迫使其他开发人员了解 JQuery。

你想给你的选择一个值吗?以下是在 Angular 中的操作方法。

首先,创建您的选择和选项,并为其绑定一个值。

<select [(ngModel)]="mySelect">
  <option *ngFor="let opt of myOptions" [value]="opt">{{ opt}}</option>
</select>

然后,在 TS 中创建变量,并在构造函数中设置 select 的值。

export class myComponent {
  mySelect: string;
  myOptions: ['option 1', 'option 2', 'option 3'];
  constructor() {
    this.mySelect = this.myOptions[0];
  }
}

您的选择现在具有您的第一个选项的价值。

如果你想使用服务,就这样做

export class myComponent {
  mySelect: string;
  myOptions: ['option 1', 'option 2', 'option 3'];
  constructor() {
    this.loadCars();
  }
  loadCars() {
    this.baseService.getCars(message)
      .subscribe(cars => {
        this.myOptions= cars;
        this.mySelect= cars[0];
    });
  }
}

编辑如果你想使用对象:

<select [(ngModel)]="mySelect">
  <option *ngFor="let opt of myOptions" [value]="opt.value">{{ opt.desc }}</option>
</select>

在你的 TS 中

myOptions: [
  { value: 1, desc: 'option 1' },
  { value: 2, desc: 'option 2' },
  { value: 3, desc: 'option 3' },
];

【讨论】:

  • 问题是我不能使用 ngFor 因为它只能返回对象 {} 所以我不能把它当作一个数组。它甚至可以返回一个 null
  • 当然可以,这是为它准备的!看看我的编辑。
  • 我的意思是我的选项可以是数组也可以不是数组。这意味着我可以得到一个数组 [] 或一个对象 {}。所以我不能让 ngFor 因为有时不是一个数组。无论如何,我会在几分钟内正确查看您的答案。谢谢
  • 那你编码错了。一个变量应该只有一种类型,或者每种类型(任何类型)。但即使你想保留它,你也可以将你的对象转换为数组。好的,让我们更新!
猜你喜欢
  • 2017-06-17
  • 2020-10-24
  • 2016-06-06
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2017-06-08
  • 2018-05-17
相关资源
最近更新 更多