首页 > 解决方案 > 如何检查主题是否不为空?

问题描述

我有以下代码:

@Injectable()
export class FilterRegister {
  public registerFilter: Subject<any> = new Subject();
  public registerFilterParameters: Subject<any> = new Subject();

  getFilter(): Observable<any> {
    return this.registerFilter.asObservable();
  }

  getParameters(): Observable<any> {
    return this.registerFilterParameters.asObservable();
  }
}

registerFilter如果不为空,如何签入模板?喜欢:

<div *ngIf="!!registerFilter"></div>

标签: angularrxjsangular7

解决方案


因为registerFilter是可观察的,您需要使用async管道或使用subscribe

任何一个

registerFilter$: Observable<any>

this.registerFilter$ = service.getFilter();

<div *ngIf="(registerFilter$ | async)"></div>  

或者

registerFilter : any;

service.getFilter().Subscribe((value) => this.registerFilter = value);

<div *ngIf="registerFilter"></div>  

建议

作为旁注,这将更干净地实现您的服务。

export class FilterRegister {
  registerFilter$ : Observable<any> = this.registerFilter.asObservable();
  registerFilterParameters$ : Observable<any> = this.registerFilterParameters.asObservable();
  private registerFilter: Subject<any> = new Subject();
  private registerFilterParameters: Subject<any> = new Subject();

  foo() {
    this.registerFilter.next('value');
  }
}

推荐阅读