angular - Angular - 为什么“[selected]”在一个案例中有效,但在另一个案例中无效?
问题描述
我正在创建一个用于编辑用户数据的表单,但是当我需要在表单中使用两个“选择”时,我陷入了僵局。
这里的好奇心是一个选择可以正常工作,而另一个则不能。
我在 component.ts 中的代码:
teams = [
{id: 0, name: Team[Team.Mobile]},
{id: 1, name: Team[Team.Frontend]},
{id: 2, name: Team[Team.Backend]}
]
genders = [
{id: 0, name: Gender[Gender.Male]},
{id: 1, name: Gender[Gender.Female]},
{id: 2, name: Gender[Gender.Other]},
]
employeeForm = this.formBuilder.group({
name: '',
gender: [2],
birthDate: '',
email: '',
startDate: '',
cpf: '',
team:[2]
});
ngOnInit(): void {
this.peopleService.getPeopleById(this.list[0].employeeId)
.subscribe(
people => {
this.employee = people;
this.employeeForm.patchValue({
name: people.name,
gender: [people.gender],
birthDate: new Date(people.birthDate),
email: people.email,
startDate: new Date(people.startDate),
cpf: people.cpf,
team: [people.team]
});
},
error => console.log(error)
);
}
get gender() {
return this.employeeForm.get('gender').value;
}
get team() {
return this.employeeForm.get('team').value;
}
我的 HTML 模板:
<form [formGroup]="employeeForm" (ngSubmit)="onSubmit()">
...
<div class="form-group">
<label for="gender">Gender</label>
<select class="form-control" id="gender" formControlName="gender">
<ng-container *ngFor="let genderEl of genders">
<option [ngValue]="genderEl.id" [selected] = "gender == genderEl.id">{{genderEl.name}}</option>
</ng-container>
</select>
</div>
<div class="form-group">
<label for="team">Team</label>
<select class="form-control" id="team" formControlName="team">
<ng-container *ngFor="let teamEl of teams">
<option [ngValue]="teamEl.id" [selected] = "team == teamEl.id">{{teamEl.name}}</option>
</ng-container>
</select>
</div>
...
</form>
我已经尝试制作一个条件容器来做同样的事情,它甚至适用于性别块,但是当我为“团队”选择做同样的事情时,它与打印的方式相同。
打印它在屏幕上的显示方式:
解决方案
帖子所有者要求的根本原因说明
gender
和不工作的原因team
是由于这个逻辑:
[selected]="team == teamEl.id"
当team
是一个数组时(例如:[2]),比较逻辑将是:
[selected]="[2] == 2"
其中要比较的两个值都是不同的值和类型。
此逻辑工作正常,因为要求确认team
并且gender
不是数组。
解决方案
因此,您不需要强制转换people.gender
为people.team
array,这会破坏现有的逻辑。
this.employeeForm.patchValue({
...,
gender: people.gender,
team: people.team
});
推荐阅读
- amazon-web-services - AWS Binpack 放置策略导致实例自动扩展期间出现问题
- azure-virtual-machine - 如何根据内存指标自动垂直扩展虚拟机
- jquery-terminal - 将原始链接内容加载到终端
- kubernetes - 如果不删除作业,Kubernetes作业完成后是否会释放资源?
- android - Android、API Server 和 Firebase 数据库关系
- javascript - 如何通过bot API使用Google App Script将文件从电报下载到Gdrive
- ruby-on-rails - “收益”有什么作用?
- c++ - 字符串类擦除成员函数的C++时空复杂度
- php - 排行榜排序得到玩家排名
- reactjs - 针对 Google 页面速度优化 React 应用