Получить значение из опции выбора в Angular 4

Как получить значение из опции выбора в Angular 4?

Я хочу назначить его новой переменной в файле component.ts. Я пробовал это, но ничего не выводит.

Вы также можете сделать это, используя [(ngModel)]?

component.html

<form class="form-inline" (ngSubmit)="HelloCorp(f)" #f="ngForm">
     <div class="select">
         <select class="form-control col-lg-8" #corporation required>
             <option *ngFor="let corporation of corporations" [value]="corporationObj">{{corporation.corp_name}}</option>    
         </select>
             <button type="submit" class="btn btn-primary manage">Submit</button>
     </div>
</form>

component.ts

HelloCorp() {
const corporationObj = corporation.value;
}

Ответ 1

Как правило (см. Stackblitz здесь: https://stackblitz.com/edit/angular-gh2rjx):

HTML

<select [(ngModel)]="selectedOption">
   <option *ngFor="let o of options">
      {{o.name}}
   </option>
</select>
<button (click)="print()">Click me</button>

<p>Selected option: {{ selectedOption }}</p>
<p>Button output: {{ printedOption }}</p>

Машинопись

export class AppComponent {
  selectedOption: string;
  printedOption: string;

  options = [
    { name: "option1", value: 1 },
    { name: "option2", value: 2 }
  ]
  print() {
    this.printedOption = this.selectedOption;
  }
}

В вашем конкретном случае вы можете использовать ngModel следующим образом:

<form class="form-inline" (ngSubmit)="HelloCorp()">
     <div class="select">
         <select [(ngModel)]="corporationObj" class="form-control col-lg-8" #corporation required>
             <option *ngFor="let corporation of corporations"></option>    
         </select>
         <button type="submit" class="btn btn-primary manage">Submit</button>
     </div>
</form>

HelloCorp() {
  console.log("My input: ", corporationObj);
}

Ответ 2

export class MyComponent implements OnInit {

  items: any[] = [
    { id: 0, name: 'one' },
    { id: 1, name: 'two' },
    { id: 2, name: 'three' },
    { id: 3, name: 'four' },
    { id: 4, name: 'five' },
    { id: 5, name: 'six}' }
  ];
  selected: number = 0;

  constructor() {
  }
  
  ngOnInit() {
  }
  
  selectOption(id: number) {
    //getted from event
    console.log(id);
    //getted from binding
    console.log(this.number)
  }

}
<div>
  <select (change)="selectOption($event.target.value)"
  [(ngModel)]="selected">
  <option [value]="item.id" *ngFor="let item of items">{{item.name}}</option>
   </select>
</div> 

Ответ 3

HTML-код

    <form class="form-inline" (ngSubmit)="HelloCorp(modelName)">
        <div class="select">
            <select class="form-control col-lg-8" [(ngModel)]="modelName" required>
                <option *ngFor="let corporation of corporations" [ngValue]="corporation">
                    {{corporation.corp_name}}
                </option>    
            </select>
            <button type="submit" class="btn btn-primary manage">Submit</button>
        </div> 
    </form>

Компонентный код

HelloCorp(corporation) {
    var corporationObj = corporation.value;
}

Ответ 4

Вам просто нужно поместить [(ngModel)] в свой элемент select:

<select class="form-control col-lg-8" #corporation required [(ngModel)]="selectedValue">

Ответ 5

Это очень просто на самом деле.

Обратите внимание, что я

I. добавление name = "selectedCorp" к открывающему тегу select и

II. изменив [value] = "corporationObj" на [value] = "corporation", что согласуется с корпорацией в вашем * ngFor = "let корпорация корпораций "выражение:

 <form class="form-inline" (ngSubmit)="HelloCorp(f)" #f="ngForm">
   <div class="select">
     <select class="form-control col-lg-8" #corporation name="selectedCorp" required>
       <option *ngFor="let corporation of corporations" [value]="corporation">{{corporation.corp_name}}</option>
     </select>
     <button type="submit" class="btn btn-primary manage">Submit</button>
   </div>
 </form>

А затем в своем файле .ts просто сделайте следующее:

HelloCorp(form: NgForm) {
   const corporationObj = form.value.selectedCorp;
}

и const corporationObj теперь являются выбранным объектом корпорации, который будет включать все свойства определенного вами класса корпорации.

Примечание:

В html-коде оператор [value] = "corporation" связывает корпорацию (из * ngFor = "let корпорация корпораций") [значение], а свойство name получит значение value.

Поскольку имя равно "selectedCorp", вы можете получить фактическое значение, получив "form.value.selectedCorp" в своем файле .ts.

Кстати, на самом деле вам не нужно "#corporation" в вашем "select" открывающем теге.