angular - Angular FormControl valueChanges 无法使用 mat-autocomplete
问题描述
我不知道为什么当我尝试通过输入来过滤员工数据时我的 formControl valueChanges 没有触发mat-autocomplete
。这是我的component.ts
和HTML
分别
myForm: FormGroup;
constructor(
private formBuilder: FormBuilder,
) {
this.prepareForm();
}
ngOnInit(): void {
this.myForm.get('employeeId') ? .valueChanges.subscribe((x) => {
console.log('Detect changes', x); // Not showing any console messages
});
this.filteredEmployees = this.packageBenefitForm.controls.employeeId.valueChanges.pipe(
startWith(''),
map((value) => this._filter(value))
);
}
prepareForm(packageBenefit ? : PackageBenefit): void {
this.myForm = this.formBuilder.group({
employeeId: [
packageBenefit ? packageBenefit ? .employeeId : '',
Validators.compose([Validators.required]),
],
});
}
和 HTML
<div class="mt-3">
<mat-form-field class="example-full-width">
<mat-label>Employee</mat-label>
<input type="text" matInput formControlName="employeeId" [matAutocomplete]="auto" />
<mat-autocomplete #auto="matAutocomplete" (optionSelected)="onSelectEmployee($event)"
[displayWith]="displayFnEmployee">
<mat-option *ngFor="let employee of filteredEmployees | async" [value]="employee">
{{ employee.firstName }}
</mat-option>
</mat-autocomplete>
</mat-form-field>
</div>
我也试过用this.packageBenefitForm.get('employeeId').valueChanges
,还是一样的问题。
有趣的是它在 Stackblitz 中工作,但不在我的应用程序中。这是 stackblitz 演示应用程序
解决方案
推荐阅读
- c - 为什么C的堆内存中的数组中只有一个奇怪的元素而其他都可以?
- mysql - 具有第三个表的外键的表之间的 Django ORM 内部连接
- r - r: unnest_tokens() 不适用于特定文件
- c# - 使用 C# (SMO) 恢复包含 FILESTREAM 数据的数据库的最佳方法
- c++ - 创建对象以添加到指针数组的函数
- c++ - (Qt) QTabWidget 和 QPlainTextEdit
- javascript - 在水平日历上显示时间数据
- java - 无法从服务器获取 RecylerView 中的视频
- c - 社交媒体数据库的段故障C程序动态二维数组
- javascript - 如何在类中从自身调用方法?