在用Dart编写的Angular2应用程序中,我有几个服务可以跟踪组件之间共享的数据,这些组件在视图中不一定具有任何特定的关系。我需要任何组件启动的更新反映在每个组件的显示中,我希望OnPush
更改检测的性能优势,我需要组件来显示组件创建之前可能已经设置的值,并且我希望所有这些都是用最少的样板完成。在Dart中使用observables for Angular2变化检测
我的研究表明Observable可能是我需要的,但我几次都找不到明确的答案。
Dart中的Observable的实现是否与Angular2兼容?
是一个可观的有意义的不同于飞镖流吗?除了被通知未来更新之外,Observable支持还特别获取当前值吗?
最后但并非最不重要的是,假设Observable符合我的要求,那么声明一个组件的Observable String属性的最小语法,使用从注入服务检索的Observable对其进行初始化,在组件的模板中显示其值(从预先存在的值开始),并更新其值,自动标记组件以进行推式变化检测?
如果Observable对此不起作用,我该怎么做呢?我目前的想法是使用自定义的Stream
子类,它在最新的侦听器接收到的任何其他事件之前插入最新的值,并通过async
管道发送它以处理从流中提取值并标记变化检测。
我的理想的解决方案看起来像这样在使用中:
@Injectable()
class MyService {
@observable int health;
}
@Component(
...)
class MyComponent {
@observable int health;
MyComponent(MyService service) : health = service.health;
}
而且在模板:
<span>{{health | async}}</span>
或为真正理想的,虽然这样的挂接到角的模板编译莫名其妙(也许用变压器?我还没有学会如何工作):
<span>{{health}}</span>
就这样,它就会起作用。
我现在有工作的自定义解决方案不是那么方便,但它很接近。
如果我正在阅读文档,我需要用'dirtyCheck()'反复轮询对象,或者在每个设置器中用样板实现'ChangeNotifier',并以任意方式手动连接每个对象的'.changes。 listen()'到Angular2的'ChangeDetectorRef.markForCheck()'。对于一个好的解决方案来说,这是多次重复的代码。它比我发现的任何东西都更接近我所需要的,但看起来我可能需要自定义解决方案。 – Douglas
这听起来是正确的。自从我自己使用它以来已经有一段时间了。 –
您可以扩展//调用角度更改检测 –