使用 spring boot mvc 和 angular,此 ngModel 文本输入表单的无线电等效项是什么?
What would be the radio equivalent of this ngModel text input form, using spring boot mvc and angular?
我正在学习有关制作员工 CRUD 模型的教程,该模型使用 spring 启动和 mysql 服务器作为后端,angular 作为前端。在创建部分,它有这个表单组(我正在添加新字段的性别部分)。
<div class="form-group">
<label>
Gender </label>
<input type="text" class="form-control" id="gender" required [(ngModel)]="employee.gender" name="gender">
</div>
这在提交时会起作用(即创建员工)。但我无法弄清楚如何将它变成一个单选按钮并提交它(它只是卡在创建页面上)。这是我在遵循单选按钮示例时尝试做的。
<div class="form-group">
<label for [(ngModel)]="employee.gender">Gender:</label>
<div>
<input id="male" type="radio" value="male" name="gender" formControlName="gender">
<label for="male">Male</label>
</div>
<div>
<input id="female" type="radio" value="female" name="gender" formControlName="gender">
<label for="female">Female</label>
</div>
</div>
我的理解需要更多的工作,但我正在努力学习。任何帮助表示赞赏。谢谢
您想使用单选按钮设置 obj employee
属性 gender
。
您可以将单选按钮分组并使用 (change)
事件来设置性别。我不久前创建了这个例子,如果你重构这个例子并使 onChange(event: any)
设置 event.value
等于你的 employee.gender
.
,它应该符合你的需要
<mat-radio-group aria-label="Select an option" (change)="onChange($event)">
<mat-radio-button value="1">Option 1 Male</mat-radio-button>
<mat-radio-button value="2">Option 2 Female</mat-radio-button>
<br>
<br>
Selected value: {{selectedValue | json}}, send to backend sex as: {{selectedSexObj | json}}
</mat-radio-group>
@Component({
selector: 'radio-overview-example',
templateUrl: 'radio-overview-example.html',
styleUrls: ['radio-overview-example.css'],
})
export class RadioOverviewExample {
selectedSexObj = { male: false, female: false };
selectedValue: any;
onChange(event: any) {
this.selectedValue = event.value;
if (event.value == 1) {
this.selectedSexObj = { male: true, female: false };
} else {
this.selectedSexObj = { male: false, female: true };
}
}
}
这是一个工作示例:https://stackblitz.com/edit/angular-qggcqg-qydurn?file=src%2Fapp%2Fradio-overview-example.ts
在 Angular 中,有 two different approaches 涉及使用表单:
在 Template-driven 表单的情况下,我们使用 ngModel
进行数据绑定,而在响应式表单的情况下,我们使用 FormControls。
问题中共享的第一个示例使用 Template-driven 方法,具有两个选项可供选择的单选按钮等效代码为:
<div class="form-group">
<label>Gender:</label>
<div>
<input id="male" type="radio" value="male" name="gender" [(ngModel)]="employee.gender">
<label for="male">Male</label>
</div>
<div>
<input id="female" type="radio" value="female" name="gender" [(ngModel)]="employee.gender">
<label for="female">Female</label>
</div>
</div>
在响应式表单方法的情况下,您可以简单地将 [(ngModel)]="employee.gender"
替换为 formControlName="gender"
,前提是您在 FormGroup 中定义了一个名为 gender
的 FormControl。
我正在学习有关制作员工 CRUD 模型的教程,该模型使用 spring 启动和 mysql 服务器作为后端,angular 作为前端。在创建部分,它有这个表单组(我正在添加新字段的性别部分)。
<div class="form-group">
<label>
Gender </label>
<input type="text" class="form-control" id="gender" required [(ngModel)]="employee.gender" name="gender">
</div>
这在提交时会起作用(即创建员工)。但我无法弄清楚如何将它变成一个单选按钮并提交它(它只是卡在创建页面上)。这是我在遵循单选按钮示例时尝试做的。
<div class="form-group">
<label for [(ngModel)]="employee.gender">Gender:</label>
<div>
<input id="male" type="radio" value="male" name="gender" formControlName="gender">
<label for="male">Male</label>
</div>
<div>
<input id="female" type="radio" value="female" name="gender" formControlName="gender">
<label for="female">Female</label>
</div>
</div>
我的理解需要更多的工作,但我正在努力学习。任何帮助表示赞赏。谢谢
您想使用单选按钮设置 obj employee
属性 gender
。
您可以将单选按钮分组并使用 (change)
事件来设置性别。我不久前创建了这个例子,如果你重构这个例子并使 onChange(event: any)
设置 event.value
等于你的 employee.gender
.
<mat-radio-group aria-label="Select an option" (change)="onChange($event)">
<mat-radio-button value="1">Option 1 Male</mat-radio-button>
<mat-radio-button value="2">Option 2 Female</mat-radio-button>
<br>
<br>
Selected value: {{selectedValue | json}}, send to backend sex as: {{selectedSexObj | json}}
</mat-radio-group>
@Component({
selector: 'radio-overview-example',
templateUrl: 'radio-overview-example.html',
styleUrls: ['radio-overview-example.css'],
})
export class RadioOverviewExample {
selectedSexObj = { male: false, female: false };
selectedValue: any;
onChange(event: any) {
this.selectedValue = event.value;
if (event.value == 1) {
this.selectedSexObj = { male: true, female: false };
} else {
this.selectedSexObj = { male: false, female: true };
}
}
}
这是一个工作示例:https://stackblitz.com/edit/angular-qggcqg-qydurn?file=src%2Fapp%2Fradio-overview-example.ts
在 Angular 中,有 two different approaches 涉及使用表单:
在 Template-driven 表单的情况下,我们使用 ngModel
进行数据绑定,而在响应式表单的情况下,我们使用 FormControls。
问题中共享的第一个示例使用 Template-driven 方法,具有两个选项可供选择的单选按钮等效代码为:
<div class="form-group">
<label>Gender:</label>
<div>
<input id="male" type="radio" value="male" name="gender" [(ngModel)]="employee.gender">
<label for="male">Male</label>
</div>
<div>
<input id="female" type="radio" value="female" name="gender" [(ngModel)]="employee.gender">
<label for="female">Female</label>
</div>
</div>
在响应式表单方法的情况下,您可以简单地将 [(ngModel)]="employee.gender"
替换为 formControlName="gender"
,前提是您在 FormGroup 中定义了一个名为 gender
的 FormControl。