我的问题
据我了解,Angular 指令通过遵循框架的 LifeCycleHook 节奏来工作。
换句话说,它们在循环中的特定时间被检查,因此相关值每秒被检查几次。
但是,我想知道是否可以控制这些检查。
情况
例如,假设我有一个 NgFor 链接到一个包含 1000 个对象的数组。
将会发生的是,每个对象每秒都会被检查几次。每秒进行数千次检查。
但这对我不起作用。这比我想要的要多得多的处理。
我感兴趣的是我的 NgFor 仅在页面初始化时和用户执行某些操作时进行检查。
<小时/>我的问题和我的尝试
所以我的问题是:
是否可以使 Angular 指令(尤其是 NgIf 和 NgFor)不再按照 LifeCycleHook 的节奏执行检查,而是仅在我需要时执行检查?或者我是否必须使用纯 HTML/CSS/Javascript 方法来执行此操作?
为了解决这个问题,我已经研究过TrackBy。然而,这并没有改变问题的核心。
仍将执行数千次检查。除了它们将检查值
而不是物体。
最佳答案
您尝试过使用 ChangeDetectionStrategy.OnPush 吗?
@Component({
selector: 'app-my-component',
templateUrl: './my-component.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent implements OnInit {
constructor(private changeDetector: ChangeDetectorRef) {
}
prop1: string;
prop2: string;
someMethod(): void {
prop1 = 'abc';
// *ngIf won't be checked yet
prop2 = 'xyz';
// nor here
this.changeDetector.detectChanges();
// now it will
}
}
关于javascript - Angular : Is it possible to make Angular directives, 例如 NgIf 和 NgFor,仅在我想要的时候检查它们绑定(bind)的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60095943/