避免重复 *ngIf Angular 2
Avoid duplicating *ngIf Angular 2
在模板内部调用函数导致无限调用
<div>{{ renderHtml() }}</div>
*ngIf
表达式
中描述了相同的行为
虽然模板有多个表达式,但在模板中写入重复的 *ngIf
表达式不合适 DRY principle
在一些angular项目中,我遇到了.ts
中的get方法调用
*ngIf="dryState"
get dryState() {return boolean }
吸气剂是避免*ngIf
重复的正确方法吗?
或者唯一正确的方法是使用 pipes?
模板中的 getter 与模板中的函数完全相同,每次更改检测都会调用它们。如果您在 getter 中放置一些 console.log
,您自己可以很容易地看到这一点。所以最好使用属性或纯管道。
与流行的看法相反,在 HTML 中调用函数并不是“错误”的。
毛病就是打电话太频繁,让他们做的事情太多了。
例如,如果您有一个只创建字符串的函数,那就更好了
greet(name: string) { return 'Hello ' + name; }
但是如果您的函数有数千条指令,是的,那将是一个问题...
第二点,调用的频率:Angular 运行一些魔法来检测变化,您可以使用名为 ChangeDetectionStrategy
的东西禁用它。如果您这样做,Angular 仅在特定条件下触发更改检测,使您的 UI 更新频率降低,从而消耗更少的资源。
有了这个,您甚至可以在 HTML 中调用复杂的函数(这显然取决于函数和检测触发的频率)。
在模板内部调用函数导致无限调用
<div>{{ renderHtml() }}</div>
*ngIf
表达式
虽然模板有多个表达式,但在模板中写入重复的 *ngIf
表达式不合适 DRY principle
在一些angular项目中,我遇到了.ts
*ngIf="dryState"
get dryState() {return boolean }
吸气剂是避免*ngIf
重复的正确方法吗?
或者唯一正确的方法是使用 pipes?
模板中的 getter 与模板中的函数完全相同,每次更改检测都会调用它们。如果您在 getter 中放置一些 console.log
,您自己可以很容易地看到这一点。所以最好使用属性或纯管道。
与流行的看法相反,在 HTML 中调用函数并不是“错误”的。
毛病就是打电话太频繁,让他们做的事情太多了。
例如,如果您有一个只创建字符串的函数,那就更好了
greet(name: string) { return 'Hello ' + name; }
但是如果您的函数有数千条指令,是的,那将是一个问题...
第二点,调用的频率:Angular 运行一些魔法来检测变化,您可以使用名为 ChangeDetectionStrategy
的东西禁用它。如果您这样做,Angular 仅在特定条件下触发更改检测,使您的 UI 更新频率降低,从而消耗更少的资源。
有了这个,您甚至可以在 HTML 中调用复杂的函数(这显然取决于函数和检测触发的频率)。