【问题标题】:Default Value for Event Emitter事件发射器的默认值
【发布时间】:2018-06-03 07:03:42
【问题描述】:

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

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

【问题讨论】:

  • 但是为了消费事件你必须发出它对吗?所以你可以在事件发出时分配值
  • 你可以只拥有public setString = 'Default Value, No Emission Yet',然后订阅ngOnInit或类似的发射。

标签: angular eventemitter


【解决方案1】:

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

然后在您的组件中,您可以收听这个 observable 并相应地执行操作。组件销毁时记得取消订阅!

mySub = new Subscription();

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

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

【讨论】:

  • 抱歉耽搁了,但我现在才使用它,效果很好!谢谢
猜你喜欢
  • 2011-08-18
  • 1970-01-01
  • 2022-01-09
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
相关资源
最近更新 更多