访问库组件中父组件的 HTML 字段

Accessing HTML field of Parent Component in Library's component

我使用 'ng generate library' 命令创建了一个 Angular 6 库。该库在 --prod build 之后用于我的基本组件,然后在主应用程序的 app.module.ts 中导入。 Library 中的 ...Component 文件有 @Input("leftPanel") leftPanel: ElementRef;

HTML Div base.component.html 上的元素是这样的:<div #leftPanel></div> 以及使用其选择器的库元素:
<lib-ng-mylibrary [leftPanel]="leftPanel"> </lib-ng-mylibrary>

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

提前致谢!

哈沙德

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

像你这样减少对象之间的耦合,使它们更可重用。

在此处查看文档:https://angular.io/guide/component-interaction

仍想使用 ElementRef 作为参数

如果您仍然想将 leftPanel 作为参数发送,您还需要在主组件中使用一个 @Input() 变量,这样它就可以将 <div #leftPanel> 解析为一个局部变量,并且该变量是用于 [leftPanel]="leftPanel"

干杯