Angular mat自动完成显示错误的筛选选项



当我在输入中输入一些东西时,我必须找到包括该子字符串的所有选项。问题是过滤后的值​​没有正确显示。

例如,我有几个词:n,new,need,snow

  1. 当我输入">n";,自动完成不会显示任何内容(但应该显示所有选项(
  2. 当我输入">ne";,它显示n,new,need,snow(但应显示new,need(
  3. 当我输入">new";,它显示new,需要(但应仅显示new(。就好像搜索服务采用以前输入的值一样

我的模板:

<form [formGroup]="myForm">
<input [formControl]="myForm.get('myInput')" type="text" [matAutocomplete]="myAutocomplete"/>
<mat-autocomplete #myAutocomplete="matAutocomplete">
<mat-option *ngFor="let item of autocompleteItems" [value]="item">
{{item}}
</mat-option>
</mat-autocomplete>
</form>

在我的组件中:

public myForm = new FormGroup({myInput: new FormControl('', [Validators.required])});
public autocompleteItems: string[] = [];
ngOnInit() {
this.myForm.get('myInput').valueChanges
.pipe(
takeUntil(this.unsubscribe),
switchMap((inputString: string) => this.mySearchService.search(inputString)))
.subscribe((foundStrings: string[]) => {
this.autocompleteItems = foundStrings;
console.log(this.autocompleteItems);
});
}

第页。S.日志显示正确的字符串数组:

  1. 输入n-n,new,need,snow
  2. 输入ne-new,需要
  3. 输入new-new

请告诉我我做错了什么。

成对管道导入您的值Changes Observable以获取订阅中的previous/next值,然后将next用于currentValue

public myForm = new FormGroup({
myInput: new FormControl('', [Validators.required])
});
public autocompleteItems: string[] = [];
ngOnInit() {
this.myForm.get('myInput').valueChanges
.pipe(pairwise())
.pipe(
takeUntil(this.unsubscribe),
switchMap((inputString: string) => this.mySearchService.search(inputString)))
.subscribe(([prev, next]: [any, any]) => {
this.autocompleteItems = next;
console.log(this.autocompleteItems);
});
}

最新更新