select - 如何在 Angular Material 9 中为“mat-select”元素编写自定义数据属性
问题描述
我正在尝试为Angular Material 9data-tag
中的元素设置自定义数据属性 () mat-select
。以下是我正在使用的代码,但是通过将网页代码检查到浏览器中没有任何HTML
反应:TS
HTML:
<mat-form-field>
<mat-label>Course</mat-label>
<mat-select [formControl]="subjectControl" required>
<mat-option>-- None --</mat-option>
<mat-optgroup *ngFor="let course of subjects" [label]="course.semester" [disabled]="course.disabled">
<mat-option *ngFor="let subject of course.courses" [value]="subject.subjectName" [attr.data-tag]="subject.subjectSemester">
{{ subject.subjectName }}
</mat-option>
</mat-optgroup>
</mat-select>
</mat-form-field>
TS:
export interface SubjectGroup {
disabled?: boolean;
semester: string;
courses: Subject[];
}
export interface Subject {
subjectName: string;
subjectSemester: string;
}
export class FormComponent implements OnInit {
subjectControl = new FormControl("", Validators.required);
subjects: SubjectGroup[] = [
{
semester: "Semester 1",
courses: [
{
subjectName: "Course 1",
subjectSemester: "1° Semester"
},
{
subjectName: "Course 2",
subjectSemester: "1° Semester"
},
{
subjectName: "Course 3",
subjectSemester: "1° Semester"
},
{
subjectName: "Course 4",
subjectSemester: "1° Semester"
},
{
subjectName: "Course 5",
subjectSemester: "1° Semester"
}
]
},
{
semester: "Semester 2",
courses: [
{
subjectName: "Course 1",
subjectSemester: "2° Semester"
},
{
subjectName: "Course 2",
subjectSemester: "2° Semester"
},
{
subjectName: "Course 3",
subjectSemester: "2° Semester"
},
{
subjectName: "Course 4",
subjectSemester: "2° Semester"
}
]
}
];
}
我发现了这个问题,但我不明白我做错了什么。谢谢
#编辑1:
我也试过:
<mat-option *ngFor="let subject of course.courses" [value]="subject.subjectName" [attr.data-tag]="subject ? subject.subjectSemester : null">
但没有...
解决方案
终于解决了:
HTML:
<mat-form-field>
<mat-label>Course</mat-label>
<mat-select
[formControl]="subjectControl"
[attr.data-tag]="this.subjectControl.value"
required
>
<mat-option>-- None --</mat-option>
<mat-optgroup *ngFor="let course of subjects" [label]="course.semester" [disabled]="course.disabled">
<mat-option *ngFor="let subject of course.courses" [value]="subject.subjectName"><!--here I have to set [value] to `.subjectName` or `.subjectSemester` to show it into the `data-tag`-->
{{ subject.subjectName }}
</mat-option>
</mat-optgroup>
</mat-select>
</mat-form-field>
正如代码注释中所写,我必须将 放入[attr.data-tag]
equal mat-select
tothis.subjectControl.value
和 set [value]
of mat-option
equal 中要存储的值[attr.data-tag]
。
推荐阅读
- java - 如何在java中读取文本文件中的列数
- c# - 如何在 Azure Dev Ops 上禁用代码签名 - 仍然收到“使用文件 mssharedlibsn1024.snk 中的公钥对输出进行错误签名 - 找不到文件”
- javascript - 如何设置新的 TextInput 值?
- pandas - Pandas 根据列表中的匹配子字符串拆分字符串
- java - 如何在 Swing 中正确移动绘制的多边形
- nuget - nuger.server 的 FindPackagesById() 不返回预发布包
- javascript - 给出 input.value 和 input.textContent 之间的区别。为什么用一种代替另一种?
- ruby-on-rails - ActionCable / Websocket 不适用于 Puma
- angular - 带有子查询的 AngularFireStore 返回集合
- postgresql - docker 中的鸡、鸡蛋和 postgres(引导 = 不能做的循环)