javascript - Angular : Is it possible to make Angular directives, 例如 NgIf 和 NgFor,仅在我想要的时候检查它们绑定(bind)的变量?

标签 javascript html angular dom

我的问题

据我了解,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/

相关文章:

javascript - 创建具有圆 Angular 边缘的 Rechart 条形图

javascript - 删除 html 模板实例

html - 在 WordPress 中制作响应表。

jquery - 修复主 div 和 float 菜单后面的循环图像背景?

angular - 如何让 ng e2e 在可用端口上运行?

具有最小和最大数字的十进制值的javascript正则表达式

javascript - 尝试模拟经验增益

html - W3.CSS 中的第一个菜单项默认为深灰色

angular - 动态创建 <mat-error> 组件并将其正确投影到父 <mat-form-field> 组件中

Angular Router - 为什么需要应用程序根目录和 Bootstrap ?