Angular无法分配为只读对象'[object HTMLImageElement]'的属性'offsetTop'

时间:2019-12-10 09:01:44

标签: angular

我尝试更改dom中元素的位置,但出现此错误。 我使用elementRef。

HTML:

<div class="container">
  <div class="original-pdf">
    <pdf-viewer *ngIf="pdfSrc" [(page)]="pageVariable" [show-all]="true" [render-text]="true" [original-size]="true"
      [src]="pdfSrc">
     </pdf-viewer>
     <img #Signature *ngIf="imageExpress" class="signature-image" [src]="imageExpress | safeHtml" cdkDragBoundary=".original-pdf"
     (cdkDragEnded)="onDragEnded($event)" cdkDrag>
  </div>
</div> 

TS:

import { Component, AfterViewInit, ViewChild, ElementRef } from '@angular/core';
@ViewChild('Signature', {static: false }) Signature: ElementRef;

ngAfterViewInit() {
    this.openPdf();
    this.openImage();
    setTimeout(() =>{
      console.log(this.Signature.nativeElement.offsetTop);
      this.Signature.nativeElement.offsetTop = 0;
    }, 1000);
  }

1 个答案:

答案 0 :(得分:1)

来自MDN DOC

  

HTMLElement.offsetTop只读属性返回的距离   相对于offsetParent节点顶部的当前元素。

offsetTop是只读属性。所以这就是为什么您会收到这样的错误。

Angular Cannot assign to read only property 'offsetTop' of object '[object HTMLImageElement]'

也许您可以使用top属性代替offsetTop

this.Signature.nativeElement.style.top = "0px";