Angular Signals 在模板中使用安全吗?

Are Angular Signals safe for use in the template?

提问人:Myles Morrone 提问时间:8/2/2023 更新时间:8/2/2023 访问量:638

问:

众所周知,你永远不应该在 Angular 模板表达式中使用函数调用,但使用信号的规则是什么?

Variable call -- OK
<div>{{person.name}}</div>

Function call -- NOT OK
<div>{{getTotal([1,2,3])}}</div>

Signal call -- MAYBE OK??
<div>{{getComputedTotal()}}</div>

从技术上讲,两者都在调用一个方法,但调用一个信号会返回一个静态变量,但也不是真的吗?信号的处理方式是否使得直接在模板中调用信号被认为是可以的?

我在模板中大量使用信号,但没有注意到性能有任何下降,只是不确定关于它们的最佳实践是什么。

Angular 函数 模板 信号

评论

1赞 D M 8/2/2023
它们不仅可以在模板中安全使用,而且还有一个 RFC 可以使基于信号的组件成为一流的功能。
0赞 Myles Morrone 8/2/2023
啊,好吧,我以前没有见过那个RFC。有趣的是,有多少信号有可能改造一个非常核心的机制和范式,而旧的 Angular 项目就是围绕着这个机制和范式的。感谢您的输入!

答:

2赞 Matthieu Riegler 8/2/2023 #1

模板中的调用方法被视为反模式,因为这可能会隐藏一些代价高昂的调用。

在某些情况下,具有功能可能是有意义的。这是一篇关于此的文章

话虽如此,在模板中调用信号之前,信号没有任何值。甚至还有一个 PR 来提供信号未执行时的模板诊断。

所以是的,打电话给他们,我们就是为此而生的!