typescript 如何显示加载器 3 秒并隐藏在角度 2
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/40503667/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to show a loader for 3 sec and hide in angular 2
提问by MMR
I want a loader show for 5 sec and hide when i click on a button, so far i tried
我想要一个加载器显示 5 秒并在我点击按钮时隐藏,到目前为止我尝试过
<div *ngIf='showloader' class="form-group loaderformgroup maindivdisplaynone" id="waitresponce" >
<div class="waitresponce">
<img src="assets/img/loader.gif" img-from="assets" alt="loader" class="waitresponceloader"/>
</div>
</div>
resetform() {
this.student = {};
Observable.timer(500).subscribe(() => {
$('#tablebody').addClass('fadding');
this.showloader = true;
Observable.timer(500).subscribe(() =>
$('#tablebody').removeClass('fadding');
this.showloader = false
);
});
}
my ts,
我的 ts
setInterval(() => {
this.showloader = true;
}, 2000);
But it is showing loader after 2000.Can someone please help.Thanks.
但它显示 2000 年后的加载程序。有人可以帮忙。谢谢。
回答by ranakrunal9
Using setTimeout
is not advisable with angular 2. you can use Observable
and timer
for it :
使用setTimeout
angular 2 是不可取的。你可以使用Observable
and timer
for it :
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/timer';
@Component({
selector : 'my-component'
})
export class MyComponent implements OnInit, OnDestroy {
public showloader: boolean = false;
private subscription: Subscription;
private timer: Observable<any>;
public ngOnInit() {
// call this setTimer method when you want to set timer
this.setTimer();
}
public ngOnDestroy() {
if ( this.subscription && this.subscription instanceof Subscription) {
this.subscription.unsubscribe();
}
}
public setTimer(){
// set showloader to true to show loading div on view
this.showloader = true;
this.timer = Observable.timer(5000); // 5000 millisecond means 5 seconds
this.subscription = this.timer.subscribe(() => {
// set showloader to false to hide loading div from view after 5 seconds
this.showloader = false;
});
}
}
回答by user2427829
If you want to show the loader for 5 sec and hide it, you should set the condition in ng-if to false in setTimeout. Right now you are doing the other way i.e setting to true after 2 sec interval. Thats why it is showing after 2 sec.
如果你想显示加载器 5 秒并隐藏它,你应该在 setTimeout 中将 ng-if 中的条件设置为 false。现在你正在做另一种方式,即在 2 秒间隔后设置为 true。这就是为什么它在 2 秒后显示。
回答by vakho papidze
2000 is 2 sec. try 5000 and instead of setInterval use setTimeout, it will happen only once
2000 是 2 秒。尝试 5000,而不是 setInterval 使用 setTimeout,它只会发生一次