Angular 18 输入信号而不是@Input

问题描述 投票:0回答:1

嗨,我怀疑我使用的是输入信号而不是@Input,我从父组件发送数据,一个作为简单变量,另一个作为信号

name = "ajai" name=signal("ajai")

两者都在工作,这两个语句有什么区别。我认为 input() 是一个信号,它只接受信号,但它接受普通字符串和效果也被触发如何?

我想知道使用 name = "ajai" 或 name=signal("ajai") 的最佳方式以及何时使用 name = "ajai" 或 name=signal("ajai")。

angular angular17 angular16 angular18 angular-signals
1个回答
0
投票

信号:

name=signal("ajai") 
fullName = computed(() => (`Grand Master ${this.name()}`);

在上面的示例中,对

name
的更新会通知
name
的消费者,例如
fullName
,这是从原始状态
name
派生的状态。

因此信号的优点是它们是反应性的,对实际值的更改会触发其他反应性元素(

computed
effect
resource
rxResource
linkedSignal
)的自动更新,并使您的代码仅在实际需要时更新,而不是一直更新。

为了充分利用信号。考虑启用

ChangeDetectionStrategy.OnPush
,以便更改检测不会多次触发。


正常特性:

name = "ajai"

它们可以存储值,但不会通知其他使用这些变量进行计算的块。

它们在每个变更检测周期进行更新,请注意,更新这些属性不会触发变更检测,而是角度预信号,在应用程序生命周期内多次触发变更检测。

© www.soinside.com 2019 - 2024. All rights reserved.