【问题标题】:Binding to an output component without EventEmitter. is it possible?绑定到没有 EventEmitter 的输出组件。可能吗?
【发布时间】:2020-02-13 14:31:23
【问题描述】:

我正在创建一组组件,我发现在输入方面进行属性绑定非常容易,有几个选项(例如,input())。但是对于组件的输出,我发现它很复杂,只有一个使用 output() 的选项。我知道你必须创建一个 EventEmitter,并且对输出感兴趣的组件必须订阅。有没有更简单的方法?

我猜,不需要订阅和 EventEmitter 的东西会很棒。

下面是我所说的示例:

export class PriceQuoterComponent {
  @Output() lastPrice = new EventEmitter<PriceQuote>();

  priceQuote: PriceQuote;

  constructor() {
    interval(2000)
      .subscribe(data => {
        this.priceQuote = {
          stockSymbol: 'IBM',
          lastPrice: 100 * Math.random()
        };

        this.lastPrice.emit(this.priceQuote);})


}

【问题讨论】:

  • 对我来说看起来很简单!
  • 容易出错。试了好几次,很容易出错。
  • 以何种方式容易出错?人为错误?
  • 此外,从秒到秒的间隔让我感到困扰。
  • rxjs 间隔与 EventEmitter 无关?您对 interval 或 EventEmitter 有疑问吗?

标签: angular typescript


【解决方案1】:

我不推荐它,但您也可以通过输入提供一个函数并在每次更改时调用它:

export class PriceQuoterComponent {
  @Input() lastPrice: Function<Number>;

  priceQuote: PriceQuote;

  constructor() {
    interval(2000)
      .subscribe(data => {
        this.priceQuote = {
          stockSymbol: 'IBM',
          lastPrice: 100 * Math.random()
        };

        if (this.lastPrice) {
          this.lastPrice(this.priceQuote);
        }
   })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2016-06-23
    相关资源
    最近更新 更多