我有一个JFrame,它允许用户调整颜色。 使用反射将此颜色设置为Colors类的静态字段。 这是Colors类: 还有许多其他组件,位于几个JFrame中,并且它们都使用Colors类的字段。 当我手动使它们重新绘制(例如,通过调整大小)时,它们都正确地重新绘制。 但是,如 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我的app.component.html:
{{bla()}}
我的app.component.ts:
import {Component, OnInit, AfterViewInit} from '@angular/core';
@Component({
selector: 'idr-app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements AfterViewInit {
constructor() {}
ngAfterViewInit() {}
bla(){
console.log(77777);
}
}
我的app.module.ts:
import {BrowserModule} from '@angular/platform-browser';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
BrowserAnimationsModule,
],
providers: [
],
bootstrap: [AppComponent],
})
export class AppModule {
}
在控制台中,我看到这种情况:
app.component.ts:13 77777
app.component.ts:13 77777
core.js:3688 Angular is running in the development mode. Call enableProdMode() to enable the production mode.
app.component.ts:13 77777
app.component.ts:13 77777
如果我在子组件中使用类似{{bla()}}的内容,则77777的显示时间会更多
所以有人知道为什么要重画几次?
这是由于Angular的默认更改检测策略所致。 如果将策略更改为onPush,您将看到该函数仅执行一次。
这是一个StackBlitz示例: https ://stackblitz.com/edit/angular-dfhfs7 ? file = src%2Fapp%2Fapp.component.ts
如果注释掉更改检测,或将其设置为默认值,则会多次看到控制台语句。 如果将其设置为onPush,则只会看到一次log语句。
这里的文章可能会有所帮助: https : //netbasal.com/a-comprehensive-guide-to-angular-onpush-change-detection-strategy-5bac493074a4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.