Получить значение из опции выбора в 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" открывающем теге.