如何在Angular4中使用行为主题

时间:2018-07-13 07:24:14

标签: angular

我正在使用一项服务来保存一个值,并在另一个组件中使用它。 这是我的服务,

 export class PageService {
  template_type$:Observable<any>;
  private myMethodSubject1 = new BehaviorSubject<any>('hi');
  constructor() { 
   this.template_type$ = this.myMethodSubject1.asObservable();
  }
  template_type(selectedType){
    this.myMethodSubject1.next(selectedType);
   //console.log(selectedType);
   }
 }

在我的职能中,我向这项服务发送价值,

 this.pService.template_type('one');

在同一组件的另一个功能中,我将此服务称为获得价值

 this.pService.template_type$.subscribe(data=>{
  console.log(data);
})

但是它首先返回“ hi”,在函数调用之后它返回值..但是我首先需要值...代码中是否有错误?

1 个答案:

答案 0 :(得分:0)

听起来您不想使用BehaviorSubject,而是使用ReplaySubject(1)

private myMethodSubject1 = new ReplaySubject<any>(1);

这没有初始值。