我只是围绕角度2,并着眼于设计向导类型的应用程序.第1页上的组件需要将数据传递给其他页面上的组件.考虑使用服务来保持在向导的下一个视图/组件中注入的状态/数据.整个事情应该松散耦合.我不认为设计一个可观察的模式是有用的,因为在下一个页面/视图之一上的组件尚不可见.角度2中的哪些新功能可以用来解决这个问题?
小智 11
我建议使用例如Redux来集中管理您的状态.然后,您将使用角度的@Input()和@Output()将状态传播到组件,并从组件中调度状态更改.
您将拥有一个订阅状态更改的顶级组件,并使用子组件@Inputs传播它们.您的子组件将使用@Outputs()向顶级组件发出状态更改请求,从而更新中央状态.
这样,您的单个组件就不必了解状态如何存储和更新,它们只是提供功能并接受可能对其功能产生预期影响的输入参数.
如果你有许多深度嵌套的组件,他们自己也使用@Input()和@Output()来提供功能,并且不直接与任何状态存储通信.
我自己使用这种方法,它使每个组件都非常精简和可重用,同时使得跟踪状态变得非常容易,并且降低了跨组件同步状态的复杂性.
此外,您还应该查看ChangeDetectionStrategy和ChangeDetectorRef,因为您可以使用此方法简化组件更改检测.您的所有子组件通常都可以使用所谓的OnPush检查策略,这意味着它们的更改检测只会在其@Input()属性发生更改时运行.因为这是状态在这种情况下改变的唯一方式,否则您可以告诉角度而不是检查更改.这也将有助于提高性能.
请注意,您可以仅使用常规的angular2服务来保持状态,但像Redux这样的东西可以免费提供一些东西,例如提供的开发工具.如果你使用Redux,还要看一下Immutable.js,因为重要的是不要直接使用Redux改变状态.
| 归档时间: |
|
| 查看次数: |
11577 次 |
| 最近记录: |