gpt4 book ai didi

Angular 组件 : Can I use an Observable instead EventEmitter as @Output() property?

转载 作者:太空狗 更新时间:2023-10-29 16:56:31 25 4
gpt4 key购买 nike

[ Angular 2.4.5]

我试过了,它似乎像 EventEmitter 一样工作:

  • 我的外部组件:

    <split (visibleTransitionEnd)="log($event)"></split>
  • 组件内部:

    @Output() visibleTransitionEnd: Observable<string>
    observer: Observer;

    constructor() {
    const myObs = new Observable(observer => this.observer = observer);

    this.visibleTransitionEnd = myObs
    .map(x => '> ' + x + ' <')
    .debounceTime(20)
    .do(() => console.log('here we are!'));
    }
  • 然后我可以调用内部组件:

    // needed condition because if nobody subscribe 'visibleTransitionEnd' > no observer!
    if(this.observer) this.observer.next('test');

View this plunker

我喜欢这个,因为我的组件中没有订阅。

但这是实现这一目标的糟糕方法吗?有什么风险/错误?

使用 Subject 是否更好?

最佳答案

EventEmitter 只是扩展了 Subject,所以这不足为奇(我也已经在 Dart 中看到了这一点)。

他们使用自己的类以便以后能够在不破坏现有代码的情况下更改实现。

因此绕过这种抽象可能不是最好的主意。如果你知道缺点并愿意接受它,你当然可以去做。

关于 Angular 组件 : Can I use an Observable instead EventEmitter as @Output() property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com