根据我对runOutsideAngular()的理解,如果我需要运行不会触发 Angular 变化检测的东西,我需要使用这个函数。但是,我的代码不起作用;当我点击按钮时,UI 发生变化,数字为 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 不会看到变化,它只意味着以这种方式运行的代码不会导致变化检测,但是因为点击事件已经发生了,所以它在你的榜样。
关于javascript - Angular 2 runOutsideAngular 仍然改变了 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300635/