Angular6 从Angular 6中的父组件访问子组件的ChangeDetectorRef或ComponentRef,而不将其注入子组件

Angular6 从Angular 6中的父组件访问子组件的ChangeDetectorRef或ComponentRef,而不将其注入子组件,angular6,Angular6,我在我的应用程序中有一个这样的组件结构- <parentComponent> <childComponent [input]="myInput"></childComponent> </parentComponent> 我可以将changeDetectorRef注入到子级的构造函数中,并使用ViewChild访问子级的cdr。但我的问题是孩子是我无法访问的第三方图书馆。我可以想到的另一种方法是将第三方组件包装到我自己的组件中,然后将cdr

我在我的应用程序中有一个这样的组件结构-

<parentComponent>
    <childComponent [input]="myInput"></childComponent>
</parentComponent>
我可以将changeDetectorRef注入到子级的构造函数中,并使用ViewChild访问子级的cdr。但我的问题是孩子是我无法访问的第三方图书馆。我可以想到的另一种方法是将第三方组件包装到我自己的组件中,然后将cdr注入包装器组件中

像这样-

@Component({
  selector: 'child-wrapper',
  template: '<childComponent [input]="myInput"></childComponent>',
  styleUrls: ['./child-wrapper.css']
})
export class ChildWrapperComponent
{
    @Input() myInput: string;
    constructor(cdr: ChangeDetectorRef) { }
}
@组件({
选择器:“子包装器”,
模板:“”,
样式URL:['./子包装器.css']
})
导出类ChildWrapperComponent
{
@Input()myInput:string;
构造函数(cdr:ChangeDetectorRef){}
}

还有其他更简单的方法吗?

有一个非常类似的问题-你找到解决方案了吗?@tris-Nope。我找不到任何干净的方法来访问孩子的changedetector,最终创建了一个自己的包装器组件,并在包装器中注入了change detector。据我所知,CDR是一种“特殊注入引用”,它不是由注入器解析的,而是通过引用直接传递给构造函数。我想我们需要检查Angulars代码来找到一种方法来实现这一点——也许它会使用一些隐藏的私有变量……是的。这也是我的理解。
@Component({
  selector: 'child-wrapper',
  template: '<childComponent [input]="myInput"></childComponent>',
  styleUrls: ['./child-wrapper.css']
})
export class ChildWrapperComponent
{
    @Input() myInput: string;
    constructor(cdr: ChangeDetectorRef) { }
}