【发布时间】:2019-02-12 20:01:02
【问题描述】:
我读了这篇好文章 Angular onPush Change Detection Strategy
他在某个地方写道:
通过使用 asObservable() 方法将您的主题暴露给外部世界是一种反模式,始终暴露可观察对象。
但他没有解释原因。这是否意味着我不应该做这样的事情?
export class ExampleComponent {
public drawerTrigger$ = new Subject<{}>();
}
在 HTML 中
<button class="hamburgher-button" type="button"
(click)="drawerTrigger$.next($event)">
<i >menu</i>
</button>
如果不是,那是正确的方法?
【问题讨论】:
-
1.是的,就是这个意思。 2. 在引用中已经回答:“总是通过使用 asObservable() 方法公开可观察对象。”
-
好的,但是怎么做呢?如果我执行
const test$ = this.drawerTrigger$.asObservable();之类的操作,我将无法在 HTML 中调用test$.next($event),并且如果我没有将 drawerTrigger$ 设置为公共,我将无法在 HTML 中使用它(AoT 编译失败) -
所以你有两个属性,一个私有主题和一个公共可观察对象。参见例如我写的这篇博文:blog.jonrshar.pe/2017/Apr/09/async-angular-data.html
标签: angular typescript rxjs