如何从Angular 4中的select选项中获取值?
我想将它分配给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;
}
答案 0 :(得分:25)
作为将军(参见Stackblitz:https://stackblitz.com/edit/angular-gh2rjx):
HTML
<select [(ngModel)]="selectedOption" name="first">
<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);
}
答案 1 :(得分:5)
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>
答案 2 :(得分:1)
您只需将[(ngModel)]
放在您的选择元素上:
<select class="form-control col-lg-8" #corporation required [(ngModel)]="selectedValue">
答案 3 :(得分:1)
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 :(得分:0)
实际上这很简单。
请注意,我是
I。将 name =“ selectedCorp” 添加到您的 select 开始标记中,然后
II。将您的 [value] =“ corporationObj” 更改为 [value] =“ corporation” ,这与您的* ngFor = “让公司成立”声明:
<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 corporateObj 现在是所选公司对象,其中将包含您定义的公司类的所有属性。
注意:
在html代码中,通过语句 [value] =“ corporation” , corporating (来自* ngFor =“ let corporate 公司”)绑定到 [值] ,并且 name 属性将获得值。
由于名称是“ selectedCorp” ,因此您可以通过获取“ form.value.selectedCorp” 来获取实际值。 ts文件。
顺便说一句,实际上,您不需要“选择” 开头标记中的“#corporation” 。
答案 5 :(得分:0)
//in html file
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="name">Country</label>
<select class="form-control" formControlName="country" (change)="onCountryChange($event.target.value)">
<option disabled selected value [ngValue]="null"> -- Select Country -- </option>
<option *ngFor="let country of countries" [value]="country.id">{{country.name}}</option>
<div *ngIf="isEdit">
<option></option>
</div>
</select>
</div>
</div>
</div>
<div class="help-block" *ngIf="studentForm.get('country').invalid && studentForm.get('country').touched">
<div *ngIf="studentForm.get('country').errors.required">*country is required</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="name">State</label>
<select class="form-control" formControlName="state" (change)="onStateChange($event.target.value)">
<option disabled selected value [ngValue]="null"> -- Select State -- </option>
<option *ngFor="let state of states" [value]="state.id">{{state.state_name}}</option>
</select>
</div>
</div>
</div>
<div class="help-block" *ngIf="studentForm.get('state').invalid && studentForm.get('state').touched">
<div *ngIf="studentForm.get('state').errors.required">*state is enter code hererequired</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="name">City</label>
<select class="form-control" formControlName="city">
<option disabled selected value [ngValue]="null"> -- Select City -- </option>
<option *ngFor="let city of cities" [value]="city.id" >{{city.city_name}}</option>
</select>
</div>
</div>
</div>
<div class="help-block" *ngIf="studentForm.get('city').invalid && studentForm.get('city').touched">
<div *ngIf="studentForm.get('city').errors.required">*city is required</div>
</div>
//then in component
onCountryChange(countryId:number){
this.studentServive.getSelectedState(countryId).subscribe(resData=>{
this.states = resData;
});
}
onStateChange(stateId:number){
this.studentServive.getSelectedCity(stateId).subscribe(resData=>{
this.cities = resData;
});
}`enter code here`