繁体   English   中英

Angular 10:如何关闭预加载器?

[英]Angular 10: how to close the preloader?

我有一个预加载器,收到消息后应该立即关闭

import { Component, OnInit } from '@angular/core';
import { PreloaderService } from 'src/app/services/preloader.service';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss'],
})
export class HomeComponent implements OnInit{
  constructor(private preloaderService: PreloaderService) {}
  
  ngOnInit(): void {
    this.preloaderService.showPreloader();
    window.addEventListener('message', function(event) {      
          console.log(event);      
  });
  
  }   
}

使用 function 关闭预加载器

this.preloaderService.hidePreloader();

我的预加载器服务:

import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';

@Injectable({
    providedIn: 'root'
})
export class PreloaderService {
    private isPreloaderVisibleSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);
    private preloaderProgressSubject: BehaviorSubject<number> = new BehaviorSubject(0);

    isPreloaderVisible: Observable<boolean> = this.isPreloaderVisibleSubject.asObservable();
    preloaderProgress: Observable<number> = this.preloaderProgressSubject.asObservable();

    constructor() {}

    updatePreloaderProgress(value: number) {
        this.preloaderProgressSubject.next(value);
    }

    showPreloader() {
        this.isPreloaderVisibleSubject.next(true);
    }

    hidePreloader() {
        this.isPreloaderVisibleSubject.next(false);
    }
}

但我不明白如何结合消息和预加载器

试试下面的代码。 我相信这会解决你的问题。

ngOnInit(): void {
  var self = this;
  this.preloaderService.showPreloader();
  window.addEventListener('message', function(event) {
    self.preloaderService.hidePreloader();
  }); 
}

如果您的事件意味着它是加载的,那么就这样写:

ngOnInit(): void {
  this.preloaderService.showPreloader();
  window.addEventListener('message', function(event) {
    this.preloaderService.hidePreloader();
  }); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM