angular6 - 访问库组件中父组件的 HTML 字段
问题描述
我使用“ng generate library”命令创建了一个 Angular 6 库。该库在 --prod build 之后在我的基础组件中使用,然后在主应用程序的 app.module.ts 中导入。库中的 ...Component 文件有@Input("leftPanel") leftPanel: ElementRef;
base.component.html 上的 HTML Div 元素如下所示:<div #leftPanel></div>
库元素使用其选择器:
<lib-ng-mylibrary [leftPanel]="leftPanel"> </lib-ng-mylibrary>
库组件实现 AfterViewInit。在实现方法中,这段代码执行失败:this.leftPanel.nativeElement.style.flexBasis = '50%';
它说,this.leftPanel.nativeElement is undefined。但我可以看到 this.leftPanel 指向 div。想知道为什么即使@Input leftPanel 是'ElementRef'类型,它也不允许this.leftPanel.nativeElement`?
提前致谢!
解决方案
哈沙德
ElementRef
我的感觉不是发送父级,而是您的组件应该具有@Output
并触发由父级处理的事件,以更改本机面板宽度。
这样做可以减少对象之间的耦合并使它们更具可重用性。
请参阅此处的文档:https ://angular.io/guide/component-interaction
还是想用 ElementRef 作为参数
如果您仍想将 leftPanel 作为参数发送,则您的主组件中还需要一个 @Input() 变量,以便它可以解析<div #leftPanel>
为局部变量并且该变量用于[leftPanel]="leftPanel"
干杯
推荐阅读
- javascript - '位置:固定'在 div 内的按钮上隐藏按钮
- mysql - mysql表命名为保留字不适用于junit HSQLDB
- ssis - 具有主键和外键的事实表
- firebase - 如何通过 firestore 中的 add() 将图像上传到自动生成的文档
- html - 如何使导航栏的元素居中
- mysql - Variable to replace %s for sql is not getting honored
- c++ - How to convert opencv Matx to Mat
- google-apps-script - Unexpected error while getting the method or property insert on object Apiary.dfareporting.ads
- flutter - How do I correctly implement a FutureBuilder in Flutter in this case?
- maven - 将资源目录包含到 Quarkus 目标输出中