如何从选择中选择选项并将其指定为选择ngModel

时间:2016-09-09 10:05:29

标签: select angular angular2-forms angular2-ngmodel

我有以下select菜单:

<div class="medium-3 columns">
    <label>First Menu
        <select name="first-menu">
            <option *ngFor="let i of items" [value]="i.name">{{i.name}}</option>
        </select>
    </label>
</div>

我会将模型分配给选择菜单,所以我按照以下方式编辑代码(我看到它here):

<div class="medium-3 columns">
    <label>First menu
        <select [ngModel]="myForm.firstMenu" (ngModelChange)="onSelected($event)" name="first-menu">
            <option *ngFor="let i of items" [value]="i.name">{{i.name}}</option>
        </select>
    </label>
</div>

ngModelChange上,它会触发组件中的以下方法:

onSelectedFirstMenu(e: any): void {
    myForm.firstMenu = e;
}

由于我必须添加几个菜单,我会进行代码重用,因此我不想为每个html菜单创建多个方法,如onSelectedSecondMenuonSelectedThirdMenu等。 所以我只想对每个菜单(ngModelmyForm.secondMenu等等使用不同的myForm.thirdMenu来获取所选的选项。 在Angular2中有可能吗?

3 个答案:

答案 0 :(得分:3)

我解决了,有两种方法可以获得相同的行为:

第一种方式(首选):

<div class="medium-3 columns">
    <label>First Menu
        <select [(ngModel)]="myForm.firstMenu" name="first-menu">
            <option *ngFor="let i of items" [value]="i.name">{{i.name}}</option>
        </select>
    </label>
</div>

第二种方式:

<div class="medium-3 columns">
    <label>First Menu
        <select [ngModel]="myForm.firstMenu" (ngModelChange)="myForm.firstMenu = $event" name="first-menu">
            <option *ngFor="let i of items" [value]="i.name">{{i.name}}</option>
        </select>
    </label>
</div>

更多信息here

答案 1 :(得分:1)

如果我正确理解你的问题,每个菜单都有不同的用途,因此,试图以某种方式将所有这些菜单的调用方法结合起来是不正确的。

为每个JSONObject jsonObject1 = new JSONObject(First_JSON); JSONObject jsonObject2 = new JSONObject(Socond_JSON); JSONObject jsonObject3 = new JSONObject(); jsonObject3.put("json_obj", jsonObject1.getInt("json_obj")+jsonObject2.getInt("json_obj")); 设置一个方法是正确的方法,每个方法都应该有它的&#39;自己的逻辑

如果我误解了,请告诉我

使用<select>将select绑定到[(MyForm.firstMenu)]属性

答案 2 :(得分:0)

根据您的具体要求,这样的事情应该做:

C
    //our root app component
import {Component, Directive, Output, EventEmitter, Input, SimpleChange} from 'angular2/core'

@Component({
  selector: 'my-app',
  host: {
    '(mouseenter)':'MouseEnter()'
    '(mouseout)':'MouseOut()'
   },
  template: `
    <img [src]="source"/>
    `
})
export class App {
  source='images/angular.png';

  MouseEnter(){
    console.log('Hovering');
    this.source = 'images/car.png';  
  }

  MouseOut(){
    this.source='images/angular.png';
  }
}