事件发射器的默认值

时间:2017-12-20 16:47:16

标签: angular eventemitter

假设我有一些事件从服务中发出字符串值:

public myString: EventEmitter<string> = new EventEmitter<string>();

然后在我的组件中,我按如下方式发出它:

this.myService.myString.emit(value)

我想为没有事件尚未发出时使用此事件的字符串设置默认值。是否可以做类似的事情:

public setString: string = 'Default Value, No Emission Yet' || this.myService.subscribe(emittedValue => this.setString = emittedValue);

1 个答案:

答案 0 :(得分:4)

由于您使用的是服务,我建议您不要使用EventEmitterWhat is the proper use of an EventEmitter?

由于您需要初始值,我建议使用BehaviorSubject作为初始值。

import { BehaviorSubject } from 'rxjs/BehaviorSubject';

private myString = new BehaviorSubject<string>('Default Value, No Emission Yet')
public myString$ = this.myString.asObsevable();

然后,只需在您的组件中,您就可以收听此可观察对象并执行相应的操作。

constructor(private myService: MyService) { 
  myService.myString$.subscribe(value => {
    // conditions and do stuff...
  })
}