[英]How to get the selected value and text from a dropdown on page load and on click a button with reactive form in angular 8
[英]How to get selected value and selected text of a dropdown on click a button in angular 7
我有一个下拉菜单 select,在这里单击按钮,我需要控制台选择的文本(绿色..)和选择的值(1..),我尝试使用 ngmodel 但我只能捕获值并且那里显示空选项在 select 字段中。这是下面的代码,
<select>
<option *ngFor="let status of statusdata" value="{{status.id}}">{{status.name}}</option>
</select>
<button type="submit" (click)="register()" class="btn btn-primary mr-1">Register</button>
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
dotsh:any;
hoverIndex:number = -1;
groups:any;
test:any;
constructor(private formBuilder: FormBuilder) {
}
onHover(i:number){
this.hoverIndex = i;
}
columns = ["name", "Items","status"];
ngOnInit() {
this.test = false;
this.statusdata = [{"id":1,"name":"green"},{"id":2,"name":"red"},{"id":3,"name":"yellow"}];
}
register(){
console.log('selected Value');
console.log('selected name');
}
}
如果您想要在选择时将整个 object 存储为一个值,您可以试试这个:
<select [(ngModel)]="value">
<option *ngFor="let status of statusdata" [ngValue]="status">
{{status.name}}</option>
</select>
然后在你的组件中声明变量值,或者让它未定义,或者将它分配给你想要的值(它需要是整个对象)。 例如:
export class HomeComponent implements OnInit {
statusdata = [{"id":1,"name":"green"},{"id":2,"name":"red"},{"id":3,"name":"yellow"}];
value = statusdata[0];
....
这应该默认为选择的第一个选项。 然后,如果您只想打印该值:
console.log(this.value.id);
console.log(this.value.name);
为了达到预期的效果,请使用以下选项,在 component.html 和 commponent.ts 中使用 Formbuilder、FormGroup 和 Form Control 名称
组件.html
[formGroup]="profileForm"
formControlName="name"
`组件.ts
3.声明formgroup并使用formbuilder初始化名称
profileForm: FormGroup
constructor(private formBuilder: FormBuilder) {
this.profileForm = this.formBuilder.group({
name: new FormControl(1)
});
4. 在按钮上单击使用this.profileForm.get('name').value
获取值
register(){
console.log('selected Value', this.profileForm.get('name').value);
console.log('selected name', this.statusdata.filter(v => v.id == this.profileForm.get('name').value)[0].name);
}
示例工作代码供参考 - https://stackblitz.com/edit/angular-unnal4?file=src/app/app.component.ts
有关反应式 forms - https://angular.io/guide/reactive-forms的更多详细信息,请参阅此链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.