首页 > 解决方案 > angular2 - 无法从主题获取数据

问题描述

我想使用主题进行初始化并从服务中获取数据。我究竟做错了什么?

主组件组件.TS

export class HomeComponentComponent implements OnInit {

  public homeSub;
  constructor(
    private subService: SubjectService
  ) { }
  
  ngOnInit() {
    this.subService.initialiseSubject(true);
    this.subService.getSubject().subscribe(res => {
      this.homeSub = res;
      console.log(res);
    })
  }

}

主页组件组件.HTML

<p>
{{homeSub}}
</p>

主题服务.ts

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

@Injectable({
  providedIn: 'root',
})
export class SubjectService {

  constructor() { }
  private subTest = new Subject<boolean>();

  initialiseSubject(params: boolean) {
    this.subTest.next(params);
  }
  getSubject() {
    return this.subTest.asObservable();
  }
}

我在控制台或 html 上没有得到任何输出。
Stackblitz 链接

标签: angulartypescriptrxjs

解决方案


如果您更改为BehaviorSubject,您将获得发出的值。

private subTest = new BehaviorSubject<boolean>(false);

请查看这篇文章。


推荐阅读