将变量转换为可观察流

时间:2018-02-16 06:08:37

标签: angular rxjs observable

我有一个用例,其中特定div的宽度改变了w.r.t dom,我使用view child来点击宽度。

我想只使用最新的宽度值,而Angular也给出了中间结果。如何将变量转换为Observable Stream。我尝试使用Observable.of,但它只订阅了一次而不是之后。

@Directive({
  selector: '[watchValueChange]'
})
export class ChangeDirective{

  @Output() onValueChange = new EventEmitter<any>();
  @Input('watchValueChange') public valueChange: any = null; 
  

//这个值动态地接收我想要的宽度   可观察到我可以订阅并使用debouce来获得   所有更改完成后但在第一次订阅后的值   输入改变它不起作用

  private changeEvent: Subject<any> = new Subject<any>();

  ngOnInit() {
    this.valueChange.asObservable().debounceTime(300).subscribe(value => {
      this.onValueChange.emit(value);
    });
  }

  ngOnChanges(changes){
    this.changeEvent.next(this.valueChange);
  }
}

1 个答案:

答案 0 :(得分:0)

您似乎正在寻找auditTime

this.changeEvent.auditTime(300).subscribe(value => {
    this.onValueChange.emit(value);
});

我不知道你的意思:

  

...在第一次订阅后,当输入改变时它不起作用

也许您想使用ReplaySubject(1)代替Subject()

相关问题