在 Angular (15) 中,如果我们有一个组件属性 (
@Input
),它是一个对象 - 例如 [config]="{ size: 10, label: 'hello' }"
- 是在 HTML 中实例化的对象在每个更改检测循环上重新创建吗?直接在模板(HTML)中执行此操作是否不好?
我在示例中多次看到过这种情况,我不确定这是否只是一种懒惰的方式来传达事情是如何完成的,或者 Angular 是否已经优化到足以不重新创建对象而只需在更改检测上检查其属性。
这个问题在我使用 Pipe 来确定配置对象的值的特定情况下很有趣。我确保 Pipe 是纯粹的,因此它只评估输入是否发生变化,但每次都重新创建对象的情况下会评估。
例如
[config]="{ size: someotherObject | calcSize, label: 'hello' }"
创建对象的字符串将在每次更改检测运行时进行评估。它可能有一个函数调用 - 至少是因为这样。
这不是一个昂贵的手术,所以没关系。如果没有管道,我建议将其移动到组件,但如果有管道 - 最好保持原样。