【发布时间】:2018-09-11 13:11:11
【问题描述】:
我正在 Anglur 5 中实现一个带有async 的搜索字段。当用户开始在搜索框中输入内容时,应该会显示加载指示符。并且当结果到达时,指示器应该被隐藏。
我试过这个approach,但加载指示器是可见的,即使用户没有输入任何内容。 那么实现这一点的最佳方法是什么?
我的模板:
<mdl-textfield #searchBox (keyup)="search(searchBox.value)" type="text" placeholder="Nach Kurs, Beteuer, Studiengruppe suchen..."></mdl-textfield>
<!--[...]-->
<div *ngIf="courses$ | async as courses">
<ng-container *ngIf="courses.length; else noItems">
<app-course *ngFor="let course of courses" [course]="course" [addAble]="true"></app-course>
</ng-container>
<ng-template #noItems><em>Kein Ergebniss für "{{searchBox.value}}"</em></ng-template>
</div>
组件:
public courses$: Observable<Course[]>;
public searchCourseTerm = new Subject<string>();
public serachLoadingIndicator: boolean = false;
constructor(private courseService: CourseService) { }
gOnInit() {
this.courses$ = this.searchCourseTerm.pipe(
debounceTime(300),
distinctUntilChanged(),
switchMap((term: string) => this.courseService.searchCourse(term)),
);
}
search(term: string ){
this.searchCourseTerm.next(term);
}
【问题讨论】:
标签: angular typescript angular5