angular - 当一个指令位于Angular 6中的另一个指令内时,工作指令的生命周期顺序如何?
问题描述
在组件中,我有两个指令:
@Directive({
selector: '[ng-parent]'
})
export class Parent implements OnInit, AfterViewInit {
public ngOnInit(): void {
console.log('parent.directive:ngOnInit');
}
ngAfterViewInit() {
console.log('parent.directive:ngAfterViewInit');
}
}
@Directive({
selector: '[ng-child]'
})
export class Child implements OnInit, AfterViewInit {
public ngOnInit(): void {
console.log('child.directive:ngOnInit');
}
ngAfterViewInit() {
console.log('child.directive:ngAfterViewInit');
}
}
在main.component
我使用这样的指令时:
<div ngParent>
<ng-template ngFor let-row [ngForOf]="arrRows">
<div>
<ng-template ngFor let-field [ngForOf]="arrFields">
<div ngChild></div>
</ng-template>
</div>
</ng-template>
</div>
控制台显示结果初始化序列:
main.component:ngOnInit
ng-parent.directive:ngOnInit
ng-parent.directive:ngAfterViewInit
main.component:ngAfterViewInit
ng-child.directive:ngOnInit
ng-child.directive:ngAfterViewInit
我简化代码。我猜问题ng-template
在ng-template
. 据我了解,生命周期顺序应该不同。我需要这样的结果初始化生命周期指令序列:
main.component:ngOnInit
ng-parent.directive:ngOnInit
ng-child.directive:ngOnInit
ng-child.directive:ngAfterViewInit
ng-parent.directive:ngAfterViewInit
main.component:ngAfterViewInit
解决方案
推荐阅读
- python - Django:复杂的注解,如何避免for循环?
- php - 在许多服务器上重用 laravel webapp 核心
- java - 与Android App中的服务器通信不起作用
- arrays - Lua / 为什么向矩阵添加新元素会覆盖先前添加的元素?
- apache-kafka - 使用 JMX 监控 Kafka 消费者指标
- c++ - 给定一个右值,为什么 move ctor 比 const copy ctor 更匹配?
- java - 如何将 JSON GET 请求转换为 HTTP PATCH 请求
- jq - 在多行上拆分文本时解析错误
- asp.net - 将自定义 UserManager 注入 Controller Net Core 2.1
- java - 自定义微调器下拉箭头