angular - 事件发射器的默认值

标签 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);

最佳答案

由于您使用的是服务,我建议不要使用 EventEmitter:What 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();

然后就可以在您的组件中收听此可观察对象并相应地执行操作。记得在组件销毁时取消订阅!

mySub = new Subscription();

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

ngOnDestroy() {
  this.mySub.unsubscribe();
}

关于angular - 事件发射器的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910787/

相关文章:

javascript - Angular CDK Overlay,更改默认覆盖容器

javascript - Angular 4+。为变量赋值

javascript - JQuery 触发自定义事件导致错误

javascript - 使用事件发射器触发的事件是否保持顺序

Golang 事件 : EventEmitter/dispatcher for plugin architecture

angular - PrimeNG 自动完成与对象绑定(bind)

javascript - 使用 Angular 和 NodeJs (CORS) 进行跨域请求

angular - 在 Angular 中使用带有数组的输出指令

node.js - 类型错误 : Cannot read property 'EventEmitter' of undefined typescript nodejs

Angular - 有没有办法将服务实例化推迟到异步初始化应用程序?