当我在输入中输入一些东西时,我必须找到包括该子字符串的所有选项。问题是过滤后的值没有正确显示。
例如,我有几个词:n,new,need,snow
- 当我输入">n";,自动完成不会显示任何内容(但应该显示所有选项(
- 当我输入">ne";,它显示n,new,need,snow(但应显示new,need(
- 当我输入">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.日志显示正确的字符串数组:
- 输入n-n,new,need,snow
- 输入ne-new,需要
- 输入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);
});
}