我正在尝试使用 Angular Material 自动完成功能。但是当我保持专注时,我开始出错:无法读取未定义的属性'createEmbeddedView'
输入时遇到的每个字母我也会收到另一个错误错误TypeError:this.autocomplete._setVisibility不是函数有人可以解释我的代码有什么问题吗?我是 Angular 初学者。
在我的html上,我有:
<mat-form-field>
<input formControlName="accId" matAutocomplete="auto" matInput>
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let accId of filteredOptions"> {{accId}}
</mat-option>
</mat-autocomplete>
</mat-form-field>
我的.ts文件:
filteredOptions: Observable<string[]>;
ngOnInit(): void {
this.filteredOptions = this.form.controls['accId'].valueChanges.pipe(startWith(''),map(val => this.filter(val)));
console.log(this.filteredOptions);
}
filter(val: string): string[] {
console.log("Inside filter...");
return this.details.listOfAccIds.filter(option =>option.toLowerCase().includes(val.toLowerCase()));
}
注意:我正在获取此。详细信息为
Detail {listOfAccIds: Array(3), listOfCodes: Array(2), listOfReasons: Array(3)}
listOfAccIds:(3) ["altaccId", "altaccIdss2", "altiid33"]
listOfCodes:(2) ["code1", "code2"]
listOfReasons:(3) ["reason1", "reason2", "reason3"]
最佳答案
您缺少关于matAutocomplete指令的方括号:
<input formControlName="accId" matAutocomplete="auto" matInput>
应该
<input formControlName="accId" [matAutocomplete]="auto" matInput>
需要括号,因为您要将引用传递给变量auto。您编写它的方式仅将静态字符串传递给指令,这是行不通的,因为指令需要元素引用,而不仅仅是其名称。
关于angular - Angular Material 自动完成显示TypeError : Cannot read property 'createEmbeddedView' of undefined,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50689675/