html - 在 Angular 模板中抽象属性表达式的正确方法
问题描述
重复表达
我在 Angular 6 中有以下组件模板。我重复a && (b || c)
表达式 3 次,所以我想以某种方式抽象它。
父组件.html
<component
[prop1]="1"
[prop2]="a && (b || c)"
>
</component>
<component
[prop1]="2"
[prop2]="a && (b || c)"
>
</component>
<component
[prop1]="3"
[prop2]="a && (b || c)"
>
</component>
将其抽象为函数
我的第一个直觉是将它抽象为一个函数,一个定义模板的组件的方法。下面介绍的代码。
这种方法的问题在于性能。该函数被调用了几十次,即使a
,b
和c
值没有改变。这个问题证实了我的担心。
父组件.ts
@Component(...)
class ParentComponent {
(...)
public prop2(): boolean {
return this.a && (this.b || this.c);
}
(...)
}
父组件.html
<component
[prop1]="1"
[prop2]="prop2()"
>
</component>
<component
[prop1]="2"
[prop2]="prop2()"
>
</component>
<component
[prop1]="3"
[prop2]="prop2()"
>
</component>
问题
Angular(尤其是性能方面)抽象该a && (b || c)
表达式的正确方法是什么?
解决方案
如果您的情况非常简单test
,那么您可以使用内联检查,但是如果您的情况很复杂,那么最好转到单独的功能。
inline
性能方面和时尚不会有太大差异,function
因为两者的执行量相同。在这两种情况下都没有额外的优化。
推荐阅读
- google-bigquery - 我在 Big Query 问题中运行多个查询,面临正确和结构化的输出
- java - Tomcat 8.5 - 错误 403 Forbidden or empty params on POST request
- mysql - 在构建时在 Docker 容器中创建 MySQL 数据库
- ios - 如何让 swiftlint 在 xcode bot 中报告错误而不是触发构建脚本错误?
- java - 使用不同的应用程序服务器获取时区会产生意外的结果
- angular - Angular:如何在连续读取和覆盖的列表中为刚刚更改的项目设置动画
- django - 上传文件夹 Django 的权限被拒绝
- sql-server - 列 'ACCOUNT.ACCOUNT_ID' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中
- r - 从 Boston BlueBikes 数据导入 R 中的表时如何处理 nullsError
- opencv - g++ 链接 OpenCV 演示没有找到 cv::_InputArray::_InputArray 和 cv::imshow