代码之家  ›  专栏  ›  技术社区  ›  Don Tomato

由于未知原因,AsyncPipe无法工作

  •  0
  • Don Tomato  · 技术社区  · 6 年前

    组成部分:

    loading: boolean = false;
    loading$ = new Subject<boolean>();
    
    ngOnInit(): void {
      this.loading$.subscribe(e => { this.loading = e; });
      ...
    }
    

    模板:

    <div *ngIf="loading$ | async">
       <h1>Loading 1 ...</h1>
    </div>
    
    <div *ngIf="loading">
       <h1>Loading 2 ...</h1>
    </div>
    

    Loading 2 Loading 1 不。原因可能是什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Harun Yilmaz    6 年前

    因为你的 loading$ 主题没有任何初始值。

    BehaviorSubject

    第一种方式:

    loading: boolean = false;
    loading$ = new Subject<boolean>();
    
    constructor() {
      this.loading$.next(true);
    }
    

    第二种方式:

    loading$ = new BehaviorSubject<boolean>(true);
    

    进一步阅读:

    https://medium.com/@luukgruijs/understanding-rxjs-behaviorsubject-replaysubject-and-asyncsubject-8cc061f1cfc0

        2
  •  1
  •   Suren Srapyan    6 年前

    尝试从代码中删除订阅- async

    loading: boolean = false;
    loading$ = new Subject<boolean>();
    
    ngOnInit(): void {
    
    }