【发布时间】:2021-07-19 07:18:24
【问题描述】:
在使用<ng-content></ng-content>进行内容投影时,通常可以通过依赖注入来访问父组件:
@Component({
selector: 'app-parent',
template: 'Parent / <ng-content></ng-content>'
})
export class ParentComponent {}
@Component({
selector: 'app-child',
template: 'Child / Has parent: {{parentComponent != null}}'
})
export class ChildComponent {
constructor(@Optional() public parentComponent: ParentComponent) {}
}
<app-parent>
<app-child></app-child>
</app-parent>
<!-- this will output Parent / Child / Has parent: true -->
但是,当添加另一个层时,这似乎不起作用,尽管 app-parent 仍然是 DOM 中 app-child 的直接父级:
@Component({
selector: 'app-host',
template: `Host / <app-parent><ng-content></ng-content></app-parent>`
})
<app-host>
<app-child></app-child>
</app-host>
<!-- this will output: Host / Parent / Child / Has parent: false -->
另请参阅此 stackblitz 示例:https://stackblitz.com/edit/angular-ivy-e7c6i8?file=src/app/app.component.html
即使在嵌套场景中,是否有某种方法可以从 ChildComponent 访问 ParentComponent?
【问题讨论】:
标签: angular