刚刚执行了一段简单的代码:
import { Component } from '@angular/core';
function log(...args: Array<any>) {
console.log.apply(null, args);
}
@Component({
selector: 'app-root',
template: '',
})
export class AppComponent {
value = 'Some value';
ngAfterContentInit(arg: any) {
log('ngAfterContentInit');
}
ngAfterContentChecked(arg: any) {
log('ngAfterContentChecked');
}
ngAfterViewInit(arg: any) {
log('ngAfterViewInit');
}
ngAfterViewChecked(arg: any) {
log('ngAfterViewChecked');
}
ngDoCheck(arg: any) {
log('ngDoCheck');
}
}
请参阅https://stackblitz.com/edit/angular-7xmjmb?file=src/app/app.component.ts (StackBlitz总是在编译时加载,不知道为什么。你会看到同样的永久加载预览吗?)
它产生了一系列的消息: ngDoCheck,ngAfterContentInit,ngAfterContentChecked,ngAfterViewInit,ngAfterViewChecked,
-角在发展模式中运行。调用enableProdMode()以启用生产模式。--
ngDoCheck,ngAfterContentChecked,ngAfterViewChecked.
为什么ngAfterContentChecked和ngAfterViewChecked在ngDoCheck之后又出现了?我的建议是,原因是在ngDoCheck再次执行内容和视图检查之后(因为ngDoCheck可以对它们做一些事情)。但是为什么在查看检查之后没有执行内容检查,而ngAfterViewCheck可以对内容做一些事情。
这背后的逻辑是什么?
发布于 2022-02-15 16:17:34
您的index.html文件选择错误。
应:
<my-app>loading</my-app>这里起作用了:https://stackblitz.com/edit/angular-hz5k5d?file=src%2Fapp%2Fapp.component.ts
https://stackoverflow.com/questions/71129162
复制相似问题