根据对 runOutsideAngular() 的理解,如果我需要运行不会触发Angular变化检测的内容,则需要使用此函数。但是,我的代码无法正常工作。当我单击按钮时,用户界面正在更改,数字为2。

@Component({selector: 'my-cmp',
template: `<h1>{{num}}</h1>
           <button (click)="onClick()">Change number</button>`})

class MyComponent implements OnChanges {

  num = 1;
  constructor(private _ngZone: NgZone ) {

  }

  onClick() {
    this._ngZone.runOutsideAngular(() => {
      this.num = 2;
    }}));
  }
}

最佳答案

如果什么原因导致更改检测,并且像(click)="onClick()"这样的绑定(bind)事件确实导致更改检测,则Angular将检测到更改。
runOutsideAngular并不意味着Angular将不会看到更改,它仅意味着以这种方式运行的代码不会导致更改检测,但是由于click事件已经发生,因此在您的示例中没有意义。

10-06 07:49
查看更多