我有一个像这样的角度布局,我想从子组件更改父组件中的标题部分。

我用谷歌搜索了这个问题,但我只看到了有关将模板从父组件传递到子组件的文章。
有没有办法将模板从子组件传递到父组件?
或者有什么方法可以将组件从子组件注入到父组件的标头部分?
我知道我可以将值传递给父级,但我需要传递模板或组件。
从架构的角度来看,这个想法并不是很好,考虑到某些组件应该如何影响其他组件、从根到叶的数据流和角度变化检测。但这仍然是可能的
// parent.ts
setHeaderTemplate(templateRef: TemplateRef) {
this.headerTemplate = templateRef
}
// parent.html
<div *ngTemplateOutlet="template">
</div>
Run Code Online (Sandbox Code Playgroud)
// child.ts
@ViewChild(TemplateRef) headerTpl: TemplateRef;
constructor(private parent: ParentComponent) {}
ngAfterViewInit() {
Promise.resolve().then(() => this.parent.showHeaderTemplate(this.headerTpl));
}
// child.html
<ng-template #header>
hello header
</ng-template>
Run Code Online (Sandbox Code Playgroud)
请注意,“显示”子级中的模板逻辑是在异步代码中完成的。这样做是因为 Angular 的更改检测性质,在评估 ngAfterViewInit 时,父组件上已经完成了更改检测。
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |