Angular:是否可以使Angular指令(例如NgIf和NgFor,仅在需要时检查它们绑定到的变量?

问题描述 投票:0回答:1

我的问题

据我了解,Angular指令通过遵循框架的LifeCycleHook节奏来工作。换句话说,在循环中的某些时间检查它们,以便每秒检查几次相关值。但是,我想知道是否可以控制这些检查。


一种情况

例如,假设我有一个NgFor链接到一个包含1000个对象的数组。将会发生的是每个对象每秒都会被检查几次。每秒几千次检查。但这对我不起作用。这比我想要的要多得多。

我感兴趣的是,仅在页面初始化以及用户的某些操作期间检查我的NgFor。


我的问题和我尝试过的事情

所以我的问题是:

是否有可能使Angular指令,尤其是NgIf和NgFor,不再按照LifeCycleHook的节奏执行检查,而是仅在我希望它们执行时才执行检查?还是我必须使用纯HTML / CSS / Javascript方法执行此操作?

为了解决此问题,我已经研究了TrackBy。但是,这不会改变问题的核心。仍然需要执行几千次检查。除了它们将是值的检查而不是对象。

javascript html angular dom
1个回答
0
投票

您是否尝试过使用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

  }
}
© www.soinside.com 2019 - 2024. All rights reserved.