在我的应用程序中,当我单击一个按钮时,我想显示一个微调器。
我从这个网址得到了一个简单的 CSS 微调器: https ://projects.lukehaas.me/css-loaders/
我将 css 添加到我的main.css
文件中,然后在我的文件中添加了这行代码
app.component.html
:
<div class="loader">Loading...</div>
我选择的原因app.component.html
是我想让这个微调器在我的应用程序中随处可用..
但是现在点击按钮我正在从数据库中获取人员列表。这就是它的外观(我的组件):
export class PersonComponent implements OnInit {
private modalId: string;
private persons: Array<Person>;
constructor(private personsService: PersonsService) {}
ngOnInit() {}
// Here I'm getting data from database and I would like to display spinner/loader until all of data is loaded
show() {
$('#' + this.modalId).modal('show');
this.personsService.getAll().do(data=>console.log(data)).subscribe(persons => this.persons = persons);
}
}
这是我的app.component.html
<router-outlet></router-outlet>
<div class="loader">Loading...</div>
这是我PersonsService.ts
负责从数据库中获取数据的:
@Injectable()
export class PersonsService {
public showSpinner: boolean = false;
constructor(private _http: HttpClient) { }
getAll(): Observable<Person[]> {
this.showSpinner(); //Cannot invoke expression whose type lacks a call signature. -> I got this error here
return this._http.get<Person[]>(apiUrl)
.catch(
(error: HttpErrorResponse) => {
return Observable.throw(error);
});
// Somewhere here I would hide a spinner? Is this possible, I mean will this be shown when data is fully loaded or ?
}
displaySpinner() {
this.showSpinner = true;
}
hideSpinner() {
this.showSpinner = false;
}
我的 app.component.html 中可能需要一些 if 条件,所以它可能看起来像这样?:
<div *ngIf="personsService.showSpinner" class="loader">
Loading...
</div>
或者我需要做这样的事情?:
<div *ngIf="personsService.showSpinner">
<div class="loader">Loading...</div>
</div>
然而,这现在不起作用,我不知道如何实现这一点,在服务从数据库获取数据时简单地显示微调器,并在获取所有数据时隐藏它..
多谢你们
干杯