如何在Angular13中设置选中的选项?
How to set selected on option in Angular 13?
我目前正在努力以反应形式将 selected 值动态设置为我的选项之一。
我已经构建了一个编辑模式,它应该将当前类别显示为 select 的选项,如果我打开该编辑模式而不是空白 select。我的选项在 selection 上显示正常,但如果我想设置该值,它会以某种方式保持为空(不是 selected)。
目前我的select是这样构建的
<select
formControlName="categories"
(change)="selectCategory($event)"
class="form-select"
id="categories">
<option *ngFor="let category of categories"
[value]="category.id">
{{category.name}}
</option>
</select>
我也试过这样构建我的选项
<option *ngFor="let category of categories"
[value]="category.id"
[selected]="category === credential.category">
但这没有用。还尝试检查类别的 .name。
这是我的 .ts 文件的一部分。
public selectCategory(event: Event): void {
const category: Category | undefined = this.categories.find((category: Category) => {
return category.id === parseInt((event.target as HTMLInputElement).value);
});
this.credentialEditForm.get('category')?.setValue(category);
}
// called in the components ngOnInit() method
private initForm(): void {
this.credentialEditForm = this.formBuilder.group({
category: [this.credential.category, Validators.required],
categories: this.categories,
});
}
// called when I open the modal so the current values should be put in
// works on other fields the form has (I just didn't put them in here for the code to be shorter)
private fillFormWithInfo(): void {
this.credentialEditForm.setValue({
category: this.credential.category,
categories: this.credential.category.name,
});
}
我使用类别和类别作为表单字段,因为如果我只使用类别并且我 select 一个选项,select 字段也不会显示刚刚 selected 的值.
发现我的错误。我没有将我的类别字段设置为 id 而是名称。在我的 html 中,我还将选项的值设置为类别 ID,因此显然它也应该设置为代码中的 ID。
private fillFormWithInfo(): void {
this.credentialEditForm.setValue({
category: this.credential.category,
categories: this.credential.category.id,
});
}
我目前正在努力以反应形式将 selected 值动态设置为我的选项之一。 我已经构建了一个编辑模式,它应该将当前类别显示为 select 的选项,如果我打开该编辑模式而不是空白 select。我的选项在 selection 上显示正常,但如果我想设置该值,它会以某种方式保持为空(不是 selected)。
目前我的select是这样构建的
<select
formControlName="categories"
(change)="selectCategory($event)"
class="form-select"
id="categories">
<option *ngFor="let category of categories"
[value]="category.id">
{{category.name}}
</option>
</select>
我也试过这样构建我的选项
<option *ngFor="let category of categories"
[value]="category.id"
[selected]="category === credential.category">
但这没有用。还尝试检查类别的 .name。
这是我的 .ts 文件的一部分。
public selectCategory(event: Event): void {
const category: Category | undefined = this.categories.find((category: Category) => {
return category.id === parseInt((event.target as HTMLInputElement).value);
});
this.credentialEditForm.get('category')?.setValue(category);
}
// called in the components ngOnInit() method
private initForm(): void {
this.credentialEditForm = this.formBuilder.group({
category: [this.credential.category, Validators.required],
categories: this.categories,
});
}
// called when I open the modal so the current values should be put in
// works on other fields the form has (I just didn't put them in here for the code to be shorter)
private fillFormWithInfo(): void {
this.credentialEditForm.setValue({
category: this.credential.category,
categories: this.credential.category.name,
});
}
我使用类别和类别作为表单字段,因为如果我只使用类别并且我 select 一个选项,select 字段也不会显示刚刚 selected 的值.
发现我的错误。我没有将我的类别字段设置为 id 而是名称。在我的 html 中,我还将选项的值设置为类别 ID,因此显然它也应该设置为代码中的 ID。
private fillFormWithInfo(): void {
this.credentialEditForm.setValue({
category: this.credential.category,
categories: this.credential.category.id,
});
}