angular - Angular 7 可以将 compareWith 与模态一起使用吗?
问题描述
对不起,如果这是重复的!所以我试图将我的mat-select
默认设置为列表中的第一个选项。听起来很容易,对吧?错误的。我正在使用弹出的模式来输入任务并尝试设置默认状态(只有在选择项目后才能选择)。该compareWith
函数工作得很好,但是一旦退出模态并重新进入(不刷新页面),compareWith
函数中的第二个参数为空,并且状态不会默认为任何值。退出表单时,我将其重置。我正在使用FormControl
,不是ngModel
,只是一个仅供参考。
我尝试了几种不同的compareWith
功能,但只找到了一个有效的功能。我曾尝试使用[selected]="whatever"
select 标签上的 ,但通过研究很快发现它不适用于材料输入。我还尝试在重置表单时将 formcontrol 值设置为等于状态。这有效,但是当我再次打开模式时它已经显示。由于在选择项目之前状态处于禁用状态,因此我不想在加载时显示任何状态。
在 html 中选择项目:
<mat-form-field class="form-group">
<mat-select id="project" name="project" placeholder="Project" formControlName="project" [required]="true"
[ngClass]="{'is-invalid': formAddTask.project.errors}">
<mat-option *ngFor="let project of availableProjects" [value]="project.id">{{project.name}}</mat-option>
</mat-select>
<mat-error *ngIf="addTaskForm.get('project').hasError('required')">Project is required</mat-error>
</mat-form-field>
html中的状态选择:
<mat-form-field class="form-group">
<div class="input-group"></div>
<mat-select id="status" name="status" placeholder="Status" formControlName="status" [compareWith]="compareObjects">
<mat-option *ngFor="let status of availableStatuses; let i = index" [class.selected]="status === selectedStatus"
[value]="status.id">{{status.name}}</mat-option>
</mat-select>
</mat-form-field>
ts 中的 CompareWith 函数:
compareObjects(o1: any, o2: any): boolean {
return o1.name === o2.name && o1._id === o2._id;
}
让我知道是否还有其他需要展示的内容!
在选择项目之前,状态中不应包含任何内容,一旦发生这种情况,我希望状态默认为列表中的第一个选项。实际发生的情况是,一旦模态退出并返回,选择项目后将不再显示默认状态,或者它将显示在模态的初始加载时,我希望它只显示默认一次项目被选中。
对不起,如果我重复自己太多,我宁愿提供太多信息而不是不够。在此先感谢,任何帮助表示赞赏!:)
解决方案
所以我最终找到了解决方法。我在项目下拉列表中添加了一个 onChange 事件,并在那里设置状态下拉列表的值。
这是我最终使用的代码:
onProjectChange() {
this.addTaskForm.get('status').setValue(this.availableStatuses[0].id);
}
推荐阅读
- python - 如何为 tika 手动安装 .jar 文件?
- javascript - 使用包含()过滤对象数组不起作用
- excel-formula - 在 PowerBI 中复制 Excel 平均值
- python - Python Tika 无法读取 PDF - 无法下载 Tika Server
- javascript - JavaScript 函数返回值是来自 firestore 的未定义快照
- flutter - 如何将 json 和序列化与 firebase 和 bloc 一起使用?错误:将对象转换为可编码对象失败
- python - 将图像作为灰度导入并将其转换为灰度在将其乘以 255 时不会产生相同的结果
- google-bigquery - 在 BigQuery 中分割账户余额数据以生成借记报告
- javascript - Firefox 为什么以及如何显示其用户处于私人模式?
- excel - 如何从 24 小时移动平均数据中获取每小时读数?