2017-05-25 69 views
0

該模式想獲取視頻元素的currentTime。Angular v4。綁定變量屬性,該DOM元素還不存在

我曾嘗試:

export class Cool implements OnInit { 
    showVideo=true; 
    constructor() { } 

    ngOnInit() {} 

    video = document.getElementById('video') 
    progress = 0; 


    AfterViewInit() { 
    this.progress = parseInt(this.video.currentTime); 
    } 
}\ 

但得到一個錯誤,一個屬性不還不存在

+2

招'視頻=的document.getElementById(「視頻」)''的內部ngOnInit'並嘗試 – nmanikiran

回答

1

第一件事情是你沒有覆蓋ngAfterViewInit正常。然後你在加載之前試圖訪問DOM元素。或者移動video = document.getElementById('video')ngAfterViewInit

export class Cool implements OnInit, AfterViewInit { 
     showVideo=true; 
     private video ; 
     constructor() { } 

     ngOnInit() {} 

     progress = 0; 

     ngAfterViewInit() { 
      this.video = document.getElementById('video') 
      this.progress = parseInt(this.video.currentTime); 
     } 
} 

編輯

,而不是利用標識參數,利用模板的引用

@ViewChild('video') private video: ElementRef; //reference to video element 

假設你有以下視頻標籤

<video width="320" height="240" autoplay #video> 
    <source src="somsrc" type="video/mp4"> 
</video> 

然後this.video.nativeElement; 給你整個視頻元素對象

+0

應該使用@ViewChild(「視頻」)視頻:ElementRef ....如果你想獲得元素角度的方式並綁定它。 – codeSetter

+0

@Dipak在角度的角度來看,你是非常正確的,但是'document.getElementById('video')'沒有什麼壞處。它仍然會返回你的HTML元素。 –

+1

是的,但是OP有角度焦點,所以回答需要鼓勵適當的練習。我猜想,然後在黑客之上進行破解。 :) – codeSetter