我正在尝试向我的应用程序添加一个微调器但是微调器没有出现。
控制台或终端中没有出现错误,但是微调器没有出现。
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class LoaderService {
public status: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
display(value: boolean) {
this.status.next(value);
}
}
导入LoadService并将其添加到providers数组
import { LoaderService } from './services/loader.service';
export class AppComponent {
//for the spinner
showLoader: boolean;
//LoaderService is for the spinner
constructor(private loaderService: LoaderService) { }
//for the spinner
ngOnInit() {
this.loaderService.status.subscribe((val: boolean) => {
this.showLoader = val;
});
}
}
<router-outlet>
<div *ngIf="showLoader">
<mat-spinner></mat-spinner>
</div>
</router-outlet>
import { LoaderService } from '../services/loader.service';
export class SurveyresultsComponent implements OnInit {
constructor(private loaderService: LoaderService) { }
ngOnInit() {
//http call starts
this.loaderService.display(true);
//http call ends
this.loaderService.display(false);
}
}
答案 0 :(得分:1)
我认为你是以错误的方式调用你的加载器服务。
您的加载程序代码逻辑是
this.loaderService.display(true);
//http call ends
this.loaderService.display(false);
用custom.component.ts编写,你的HTML代码用app.component.html
编写尝试在custom.component.html中使用相同的HTML代码或尝试添加
ppm
app.component.ts中的这个逻辑,否则你可以在app.component.html中除了那个div之外打印showLoader值,如{{showLoader}}
答案 1 :(得分:1)
看起来像是一个范围问题。必须有一个AppComponent实例可供订阅函数使用组件的变量。 'this'指的是订阅功能的范围。
export class AppComponent {
//for the spinner
showLoader: boolean;
//LoaderService is for the spinner
constructor(private loaderService: LoaderService) { }
//for the spinner
ngOnInit() {
let self=this;
this.loaderService.status.subscribe((val: boolean) => {
self.showLoader = val;
});
}
}
答案 2 :(得分:0)
在Custom.component.ts类中,您在下面的2条语句中依次调用,而必须使用超时
ngOnInit() {
//http call starts
this.loaderService.display(true);
//http call ends
setTimeout(() => {
this.loaderService.display(false);
},5000);
}
通过执行此块,微调器将显示5秒。
您还可以使用ngx-Spinner(https://www.youtube.com/watch?v=5wzn5HDq0rk&)