我应该如何在 Angular 8 中使用 @ ViewChild 的新静态选项?

共2个回答,已解决, 标签: angular typescript viewchild angular8

我应该如何配置新的 Angular 8 view child?

@ ViewChild (“search text”,{read: element f f,静态: false})
公共搜索输入: 元素

Vs

@ ViewChild (“search text”,{read: element f f,静态: true})
公共搜索输入: 元素

哪个更好?我应该什么时候使用静态: 真Vs静态: 假?

第1个答案(采用)

用的最好静态: 真,因为在变化检测循环中不会检查它,它会让你的应用程序更快一点。但是,如果您的 ViewChild 元素位于* NgIf(或任何其他可能导致元素出现/消失的结构指令),您应该将静态设置为假的.

何时使用的示例静态: 假:

@ 组件 ({
模板:'
我在吗?

'
})
导出类示例组件 {
@ ViewChild ('view',{静态: false})
你看我?;

ShowMe = false;
}

静态: 假默认回退行为。阅读更多这里这里

有关迁移指南甚至更多信息,您可以查看这里

第2个答案

从角度文档

静态-是否在更改检测运行之前解析查询结果 (即仅返回静态结果)。如果没有提供此选项,编译器将回到其默认行为,即使用查询结果来确定查询解析的时间。如果任何查询结果在嵌套视图中 (例如 * ngIf),则在更改检测运行后,查询将被解析。否则,在更改检测运行之前,它将被解决。

使用它可能是一个更好的主意静态: 真如果孩子不依赖于任何条件。如果元素的可见性发生变化,则静态: 假可能会有更好的结果

PS: 由于这是一个新功能,我们可能需要运行性能基准测试。

编辑

@ 马西米利亚诺 Sartoretto 所说,Github 提交可能会给你更多的见解。

相关问题

从 angularcli 中的 HTTP Get 请求检索到的数组的范围 如何将角2前置快速 JS 变量导出到角2分量? Angular block web 请求使用的服务器吗? 在类实例中跟踪状态 如何解决: “找不到规则 '@ typescript-eslint/一致类型断言' 的定义” 如何将月份值从一个日期对象复制到另一个日期对象?[复制] 我应该如何在 Angular 8 中使用 @ ViewChild 的新静态选项? 调用重试超过异常,而 ng 构建 Angular 8-懒加载模块: 错误 TS1323: 只有当 “-module” 标志为 “commonjs” 或 “esnext” 时,才支持动态导入