Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法读取未定义的属性(读取“nativeElement”)

无法读取未定义的属性(读取“nativeElement”)
EN

Stack Overflow用户
提问于 2022-10-18 23:04:45
回答 2查看 54关注 0票数 -1

假设我有两个组件--父组件和子组件,并且我试图从父组件访问子组件的DOM元素。但我面临的问题是未定义的原生元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class ChildComponent implements OnInit,AfterViewInit{
   @ViewChild('pdfData', { read: ElementRef }) domData: ElementRef;
   constructor()
   ngOnInit(): void {
    some code..
  }
  ngAfterViewInit(): void {
    this.domData.nativeElement;
  }
}

子组件DOM元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div #pdfData class="pdfData">
    <table *ngFor="let hubxReport of hubxReportList; let i=index">
      <tr>
        <th>{{hubxReport.categoryName}} + "Test"</th>
      </tr>
      <tr>
        <th>{{column}}</th>
      </tr>
      <tr *ngFor="let item of hubxReport.hubxDataItems">
        <td></td>
        <td>{{item.itemTitle}}</td>
        <td>{{item.itemValue}}</td>
        <td>{{item.itemUnit}}</td>
        <td>{{item.normalRange}}</td>
      </tr>
    </table>
</div>

下面的代码是父组件,我正在尝试访问子组件DOM元素,问题就在这里。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class ParentComponent implements OnInit,AfterViewInit{
@ViewChild('pdfData',{ read: ElementRef }) pdf: ChildComponent ;
constructor()
ngOnit(): void{
some code...
}
ngAfterViewInit() {
    this.pdf.domData.nativeElement;
    console.log(this.pdf.domData.nativeElement) //undefine here
  }
downloadPDF(isSubmit:any) {  
    debugger      
    let doc = new jsPDF();
    let rows: Array<any> = [];
    let header: Array<any> = [];
    let medicineInfo: any;
    let physicianInfo: any;
    //this.isShow = true;
    //this.changeRef.detectChanges();
    let content= this.pdf.domData.nativeElement; //undefine here
    let _elementHandlers =  
    {  
      '#editor':function(element,renderer){  
        return true;  
      }  
    };  
    doc.html(content.innerHTML,{  
            callback: function (doc) {
              doc.save();
            },
            x: 10,
            y: 80,
            // 'x': 15,
            // 'y': 15,
            width:190,  
            'elementHandlers':_elementHandlers  
          }); 
}

这是我的Stackblitz 链接

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-18 23:44:47

您的"pdfData“模板引用变量属于”子“,因此不能从”父“访问使用viewChild。

你可以做父母

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="col-sm-6">
  <!--in click button you pass a template reference variable of the child-->
  <button ...  (click)="downloadPDF(child,false)" >
    Print
  </button>
  <!--see that you use a template reference variable in child-->
  <my-child #child></my-child>
</div>

您的函数downloadPDF

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
downloadPDF(child:any,isSubmit: any) {
    ....
    let content = child.domData.nativeElement; //see how access to the property
                                               //domData of the "child"
                      //yes, by defect all the variables in Angular are public
                      //include the variables that makes reference
                      //to viewChild
    ...
}

见您的叉式堆栈闪电战

注意:在声明没有变化的变量时,应该使用"const“(而不是let),例如,const content=..let content=...

票数 0
EN

Stack Overflow用户

发布于 2022-10-19 00:27:56

在stackblitz中,您根本没有使用my-child元素。

您可以尝试访问子变量中的pdfData,然后在父变量中访问该变量。

因此,domData是一个在子变量中声明的变量,它从pdfData读取,因此它只存在,并且可以从子对象访问。因为您的父服务器上不存在pdfData,所以从这里用ViewChild读取它将返回undefined,因此您必须在子节点中声明domData

但是,您可以使用ViewChild访问子变量中的html变量,并将其放入组件变量(就像您试图对父变量所做的那样)。

然后,在父母身上你可以<my-child #myChild></my-child>

ViewChild('myChild', read: ChildComponent) myChildComponent

这将使您能够访问所有的子属性,包括来自子属性中的子pdfDataViewChild (单词是令人困惑的)

myChildComponent.pdfData.nativeElement on AfterViewInit

分叉式堆栈闪电战

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74121154

复制
相关文章
opencv无法读取图片_opencv无法读取图片
使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取失败。
全栈程序员站长
2022/11/04
2.4K0
Mac无法读取硬盘
问题描述: 由于没有弹出移动硬盘,就拔出来了。导致再插入硬盘,电脑也无法识别了。 步骤: 1.查看一下硬盘信息 画圈的就是我的硬盘。 2.将这个硬盘挂载 sudo diskutil mount /dev/disk2s1 然后需要输入的就是你的密码(开机密码) 可以看到,已经挂载成功了。
用户4793865
2023/01/12
1.1K0
spring-PropertyPlaceholderConfiger读取属性
spring在读取配置文件的时候,我们时常使用@Value注解来注入配置文件中的配置,在配置文件中也可以通过${}的方式来引用已经申明的配置,这是依靠Spring提供的PropertyPlaceholderConfigure来实现的。
leobhao
2022/06/28
6200
python读取图片属性信息
从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。
全栈程序员站长
2022/10/01
2.1K0
python读取图片属性信息
读取项目属性文件的几种方式
项目中会把一些环境变量、公共属性配置到属性文件中,总结了一些工程加载属性文件的方式。
用户2146693
2019/08/08
1.7K0
logback.xml读取spring的属性
因为logback.xml和logback-test.xml会被logback组件直接读取,所以如果要交给spring管理,需要
十毛
2019/08/03
5.7K0
相机SD卡无法读取提示格式化 相机SD卡无法读取怎么修复
相机SD卡中储存着的照片和视频,承载着我们美好的回忆。因为相机SD卡的容量有限,我们会定期对SD卡中的数据进行云盘备份,然后清理相机SD卡中的数据。在打开相机SD卡时,可能会遇到SD卡无法读取的情况。那么,相机SD卡无法读取提示格式化,相机SD卡无法读取怎么修复?今天作者就和大家介绍一下这两个问题。
用户9208731
2023/04/18
4.2K1
相机SD卡无法读取提示格式化 相机SD卡无法读取怎么修复
Spring Boot读取配置属性的常用方式
在Spring Boot项目中我们经常需要读取application.yml配置文件的自定义配置,今天就来罗列一下从yaml读取配置文件的一些常用手段和方法。
码农小胖哥
2020/07/07
3.1K0
什么,GitHub网站的文件你无法读取
这个时候很多R语言小白会下意识的以为是自己的R语言代码有问题,其实如果你仔细 看报错,就应该是明白网络有问题,因为中国大陆绝大部分地区访问GitHub其实是很困难的。
生信技能树
2021/07/06
2.4K0
【错误记录】Android 应用连接 BLE 设备无法读取数据 ( 可以写出数据 | 无法读取数据 )
发送数据成功 : Android 应用 向 BLE 硬件设备发送数据 , 成功 ;
韩曙亮
2023/03/28
1.5K0
39 - 读取XML节点和属性值
在当前目录下有一个products.xml 文件,要求读取该文件中products节点的所有子节点的值以及子节点的属性值 <!-- products.xml --> <root> <products> <product uuid="1234"> <id>10000</id> <name>iphone9</name> <price>9999</price> </product> <product uuid="4321"> <id>20000</id> <name>
ruochen
2021/05/25
2.5K0
39 - 读取XML节点和属性值
Python数据分析之读取文件读取CSV读取Excel读取MySQL读取MongoDB
Python的数据分析,大部分的教程都是想讲numpy,再讲Dataframe,再讲读取文件。但我看书的时候,前面二章看的实在头晕,所以,我们还是通过读取文件来开始我们的Python数据分析吧。 读取
罗罗攀
2018/07/03
5.8K0
C#反射读取和设置类的属性
http://www.cnblogs.com/william-lin/archive/2013/06/05/3118233.html
跟着阿笨一起玩NET
2018/09/19
2K0
自定义支持读取XML属性的View
在Android中,添加一个View很简单,简单的你可以简简单单地使用xml和一部分简单的java代码就可以搞定。 比如这样
技术小黑屋
2018/09/04
2.1K0
Spring Boot中读取配置属性的几种方式
  本文介绍Spring Boot中读取配置属性的几种方式,项目示例中用到的application.yml和application.properties定义如下:
happyJared
2018/09/20
8.3K0
Spring Boot中读取配置属性的几种方式
java之文件读取(按单字节读取和按行读取读取)
如果要进行按行读取的话,必须采用BufferedReader BufferedReader中的readline();
IT工作者
2022/03/30
3.1K0
解决 无法读取到 /data/data/yourPackageName/files/coverage.ec 文件
参考 https://testerhome.com/topics/8554 这篇文章
全栈程序员站长
2022/09/13
1K0
点击加载更多

相似问题

离子3:无法读取未定义的属性“nativeElement”TypeError:无法读取未定义的属性“nativeElement”

24

错误TypeError:无法读取未定义的属性(读取'nativeElement')

16

无法读取未定义角的属性“nativeElement”

15

角12:错误TypeError:无法读取未定义属性(读取'nativeElement')

11

角4:无法读取未定义的属性“nativeElement”

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文