Angular6 访问库中父组件的HTML字段';s分量

Angular6 访问库中父组件的HTML字段';s分量,angular6,angular-library,Angular6,Angular Library,我使用“ng生成库”命令创建了一个Angular 6库。此库在--prod build之后用于我的基本组件,然后在主应用程序的app.module.ts中导入。库中的…组件文件具有@Input(“leftPanel”)leftPanel:ElementRef base.component.HTML上的HTML Div元素如下: 以及使用其选择器的库元素: 库组件实现AfterViewInit。在实现方法中,此代码执行失败:this.leftPanel.nativeElement.style.f

我使用“ng生成库”命令创建了一个Angular 6库。此库在--prod build之后用于我的基本组件,然后在主应用程序的app.module.ts中导入。库中的…组件文件具有
@Input(“leftPanel”)leftPanel:ElementRef

base.component.HTML上的HTML Div元素如下:
以及使用其选择器的库元素:

库组件实现AfterViewInit。在实现方法中,此代码执行失败:
this.leftPanel.nativeElement.style.flexBasis='50%'
它说,this.leftPanel.nativeElement未定义。但是我可以看到这个。leftPanel指向div。不知道为什么它不允许这个。leftPanel.nativeElement`甚至tho@Input leftPanel的类型是'ElementRef'

提前谢谢

哈什哈德

我的感觉不是发送父级
ElementRef
而是组件应该具有和
@Output
并触发父级处理的事件,以更改本机面板宽度

这样做可以减少对象之间的耦合,并使它们更加可重用

请参见此处的文档:

仍希望使用ElementRef作为参数

如果仍然希望将leftPanel作为参数发送,那么在主组件中还需要一个@Input()变量,这样它就可以将
解析为局部变量,并且该变量将在
[leftPanel]=“leftPanel”
中使用


干杯

谢谢汉密尔顿。我喜欢发出事件的想法。我试试看。我将输入变量类型从ElementRef更改为string,从application base.component.html更改为html元素的ID,而不是ref。然后在库中,使用getElementById访问父组件的html字段。它可以工作,但我更喜欢建议的松耦合方式。