要实现当单击任意位置时才更新Angular子组件视图,可以使用事件监听器和ChangeDetectorRef服务。
首先,在子组件的模板中添加一个点击事件处理程序,该处理程序将触发一个自定义事件:
子组件内容
然后,在子组件的代码中,导入ChangeDetectorRef服务,并在构造函数中注入它:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
constructor(private cdRef: ChangeDetectorRef) { }
ngOnInit() {
}
updateView() {
// 手动触发变更检测
this.cdRef.detectChanges();
}
}
最后,在父组件的模板中使用子组件,并监听子组件的自定义事件来更新父组件的视图:
在父组件的代码中,定义一个方法来更新父组件的视图:
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.css']
})
export class ParentComponent {
// 父组件的视图更新标志
updateParent: boolean = false;
updateParentView() {
this.updateParent = true;
}
}
这样,当点击子组件时,子组件的视图将更新,并触发父组件的自定义事件,从而更新父组件的视图。