【发布时间】:2019-12-13 19:47:31
【问题描述】:
我正在尝试创建一个带有自动完成功能的图书搜索栏,每次按键都会动态显示相关结果。一切正常,我正在获取数据,但结果未显示在下拉菜单中
使用 Angular 8 和 Material 8.2.3
我正在尝试创建一个带有自动完成功能的图书搜索栏,每次按键都会动态显示相关结果。一切正常,我正在获取数据,但结果未显示在下拉菜单中
import { Component, OnInit } from '@angular/core';
import { Store } from '@ngrx/store';
import { AppState } from '../app.state/app.state';
import { Observable } from 'rxjs/Observable';
import { UserName } from '../../model/name.model';
import { FormControl, FormGroup, FormBuilder } from '@angular/forms';
import { MainService } from '../main.service';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.css']
})
export class SearchComponent implements OnInit {
searchForm: FormGroup;
username: Observable<UserName[]>;
searchTerm: string;
searchResult: [];
isLoading = false;
errorMsg: string;
constructor(private store: Store<AppState>, private searchService: MainService, private formBuilder: FormBuilder) {
this.username = store.select('username');
}
ngOnInit() {
this.searchForm = this.formBuilder.group({
searchBar: ''
});
this.onChanges();
}
onChanges(): void {
this.searchForm.get('searchBar').valueChanges.subscribe(val => {
this.searchService.searchingValue(val).subscribe(function(data){
this.searchResult = data.items;
} );
});
}
}
<!-- <p>{{ username.username }}</p> -->
<h1>Book Search</h1>
<form [formGroup]="searchForm">
<!-- <mat-form-field>
<input type="text" matInput formControlName="searchBar" [matAutocomplete]="auto">
</mat-form-field> -->
<mat-form-field>
<input matInput placeholder="Search" aria-label="State" [matAutocomplete]="auto" formControlName="searchBar">
<mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn">
<mat-option *ngIf="isLoading" class="is-loading">Loading...</mat-option>
<ng-container *ngIf="!isLoading">
<mat-option *ngFor="let option of searchResult" [value]="option">
<span>{{ option.volumeInfo.title }}</span>
</mat-option>
</ng-container>
</mat-autocomplete>
</mat-form-field>
</form>
【问题讨论】:
-
你有一个stackblitz来重现这个问题吗?