3

屬性'nativeElement',我在嘗試將vimeo/player.js集成到我的angular-cli應用程序中時遇到了一些問題。vimeo/player.js - 無法讀取標題中所述的未定義

由於我還沒有發現對角4任何支持庫,我以下在以下步驟中的README.md與模塊捆綁使用。

我建VIMEO-player.component.ts

import { Component, AfterViewInit, ViewChild} from '@angular/core'; 
import { Player } from '@vimeo/player'; 

@Component({ 
    selector: 'app-vimeo-video-player', 
    templateUrl: './vimeo-player.component.html' 
}) 

export class VimeoVideoComponent implements AfterViewInit { 
    @ViewChild('vimeoVideoContainer') vimeoVideoContainer; 
    public player: Player; 

    ngAfterViewInit() { 
    this.player = new Player(this.vimeoVideoContainer.nativeElement, { 
     id: 19231868, // Generic Id 
     width: 640 
    }); 
    } 

} 

VIMEO-player.component.html

<div id="vimeoVideoContainer"></div> 

而且我想裏面使用它另一個模板的組件。比如裏面my.component.ts的模板,我有:

<app-vimeo-video-player></app-vimeo-video-player> 

我越來越Cannot read property 'nativeElement' of undefined甚至以爲我設法利用ngAfterViewInit。如果在觸發new Player()...之前設置了超時時間,則會發生同樣的情況。

我在vimeo/player.js issues上發現了這個問題,但它沒有幫助我。

編輯1

隨着@peinearydevelopment我解決了這個特別的錯誤,但現在我越來越:ERROR TypeError: __WEBPACK_IMPORTED_MODULE_1__vimeo_player__.Player is not a constructor

我在做什麼錯?我怎樣才能解決這個問題?

回答

2

更改您的div:<div #vimeoVideoContainer></div>

雖然我不能找到很好的文檔,這裏是ViewChild documentation。他們的文檔中有許多不同的地方,他們使用不同的選擇器類型。正如你從文檔中看到的那樣,它會接受一個類似的,因爲你沒有選擇一個自定義組件,所以在這裏看起來並不適用。上面的語法是我在使用字符串選擇元素時最常見的。

關於你的第二個編輯,嘗試導入Player如下import * as Player from '@vimeo/player/dist/player.js';

+0

你能解釋一下爲什麼嗎?無論如何,我得到另一個錯誤'StartNetworkComponent.html:2錯誤類型錯誤:__WEBPACK_IMPORTED_MODULE_1__vimeo_player __。播放器不是一個構造函數。 – AndreaM16

+0

是的,我試圖找到幫助解釋的文檔。 – peinearydevelopment