简体   繁体   English

Angular2 ngModel选择

[英]Angular2 ngModel select

I don't have idea how would i put selected value to Object or to Array, if i select first selector levelNum value will have object with first selected and if i select second it will have two different number inside for seperated selectors but still same ngModel name. 我不知道如何将选择的值放置到对象或数组中,如果我选择第一个选择器级别,则Num值将选择第一个选择器,如果选择第二个,分离的选择器内部将有两个不同的数字,但仍为ngModel名称。 I need this way for dynamic selectors which i get from ng-for. 我需要这种方式用于ng-for的动态选择器。 Here is my code: 这是我的代码:

//our root app component
import {Component, Directive, Output, EventEmitter, Input, SimpleChange} from 'angular2/core'
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
//import 'rxjs/Rx';
@Component({
  selector: 'my-app',
  template:`
    <h1>Selecting Number</h1>
    <select type="number" [(ngModel)]="levelNum" (ngModelChange)="toNumber()">
      <option *ngFor="let level of levels" [ngValue]="level.num">{{level.name}}</option>
    </select>
     <select type="number" [(ngModel)]="levelNum" (ngModelChange)="toNumber()">
      <option *ngFor="let level of levels" [ngValue]="level.num">{{level.name}}</option>
    </select>
    {{levelNum}}
  `,
})
export class AppComponent {
  levelNum: any;
  levels:Array<Object> = [
      {num: 0, name: "AA"},
      {num: 1, name: "BB"}
  ];
  toNumber(){
    this.levelNum = +this.levelNum;
    console.log(this.levelNum);
  }
}

I don't understand your problem properly, but maybe this plunker will help you: 我无法正确理解您的问题,但也许此助您一臂之力将为您提供帮助:

https://plnkr.co/edit/sGvWZoaP5EWDkkUJE0R2?p=preview https://plnkr.co/edit/sGvWZoaP5EWDkkUJE0R2?p=preview

//our root app component
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>

      <select (change)="levelChanged('uniqueName1', $event.target.value)">
        <option *ngFor="let lvl of _levels" [value]="lvl.value">{{lvl.name}}</option>
      </select>
      Selected Level1: {{_selectedLevel['uniqueName1']}}

      <br />

      <select (change)="levelChanged('uniqueName2', $event.target.value)">
        <option *ngFor="let lvl of _levels" [value]="lvl.value">{{lvl.name}}</option>
      </select>
      Selected Level2: {{_selectedLevel['uniqueName2']}}

      <br /><br />

      Selected Level-Array:

      <br /><br />

      {{_selectedLevel | json}}
    </div>
  `,
})
export class App {

  const _levels = [
    { value: 0, name: "AA" },
    { value: 1, name: "BB" },
    { value: 2, name: "CC" },
    { value: 3, name: "DD" },
  ];

  private _selectedLevel = {};

  constructor() {
    this.name = 'Angular2'
  }

  levelChanged(name: string, lvl: any) {
    this._selectedLevel[name] = +lvl;
  }
}

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App ],
  bootstrap: [ App ]
})
export class AppModule {}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM