观察结果在模板中不起作用?

问题描述 投票:0回答:1

我的预加载器代码是

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

@Injectable()
export class SpinnerService {
  private preloaderState$ = new Subject<boolean>();

  activate() {
    this.preloaderState$.next(true);
  }

  disactivate() {
    this.preloaderState$.next(false);
  }

  preloader(): Observable<boolean> {
    return this.preloaderState$.asObservable();
  }
}

模板是:

<div *ngIf="spinnerService.preloader() | async">Loading...</div>

激活预加载器是:

this.spinnerService.activate()

为什么我没有收到 Loading...的消息?

angular angular5 angular8
1个回答
0
投票

因为它不是一个队列在订阅的那一刻,它没有重播所有以前的事件。

尝试BehaviorSubject,而不是它将保持新用户的最后一个值。

private preloaderState$ = new BehaviorSubject<boolean>(false);

0
投票

当您在视图中绑定方法时,它在每次变化检测触发和每次为该主题创建新的订阅并等待下一个状态时被调用。调用此方法一次并绑定到视图中。

© www.soinside.com 2019 - 2024. All rights reserved.