作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
[ 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');
我喜欢这个,因为我的组件中没有订阅。
但这是实现这一目标的糟糕方法吗?有什么风险/错误?
使用 Subject
是否更好?
最佳答案
EventEmitter
只是扩展了 Subject
,所以这不足为奇(我也已经在 Dart 中看到了这一点)。
他们使用自己的类以便以后能够在不破坏现有代码的情况下更改实现。
因此绕过这种抽象可能不是最好的主意。如果你知道缺点并愿意接受它,你当然可以去做。
关于 Angular 组件 : Can I use an Observable instead EventEmitter as @Output() property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119174/
我是一名优秀的程序员,十分优秀!