这可能是自多年前Angular v2发布以来,框架中最重要的变化。
一个新功能叫做信号正在用Angular进行原型化,以及我们可以在GitHub上跟踪整个讨论.
信号从何而来?
它们是Angular团队多年来对来自开发者社区的几个不同请求的回答,更具体地说:
- 能够使用观察对象
@Input
- 能够在不使用Zone.js的情况下使用Angular来更好地控制变更检测。
- 将状态管理内置在框架中,这样我们就不再需要NgRx或NgXs这样的库了。
- 能够以响应式的方式使用Angular,而不依赖于RxJs。
换句话说,信号将是一个清晰统一的模型,用于说明数据如何在应用程序中流动,并且不需要任何依赖项(不需要RxJs、Zone或其他第三方库)。
我们需要改变应用程序中的所有内容吗?
不,因为Angular团队已经沟通过了:
- 信号将是可选的,目前使用Angular的方式将保持不变。
- 信号将提供一些方法来很好地使用RxJs(一个信号可以变成一个可观察对象,反之亦然)
信号会是什么样子?
现在得出确切的API还为时过早。我们不能100%确定信号是什么样的,但早期的API原型是这样的:
创建一个具有默认值的信号(本例中为0)

上面的代码行将非常类似于这样做const counter = new行为主体(0);
为信号设置一个新值

更新从当前值派生的值

更新信号中的值(内部状态的突变)

在HTML模板或Typescript代码中显示信号的值

上面的等价于计数器|异步
当使用RxJs时。好在有了信号系统,就不会再有了.subscribe ()
而且.unsubscribe ()
.
如果你想深入了解更多细节,这里是当前原型的文档.再说一次,这还处于早期阶段,我不指望信号在Angular 17或18之前完全可用,但这还是非常令人兴奋的!