代码之家  ›  专栏  ›  技术社区  ›  AndreaM16

维梅奥/玩家。js-无法读取未定义的属性“nativeElement”

  •  3
  • AndreaM16  · 技术社区  · 7 年前

    vimeo/player.js 在我的 angular-cli

    由于我还没有找到angular 4的任何支持库,我将按照 自述文件。医学博士 与模块绑定器一起使用 .

    我建造了 vimeo播放器。组成部分输电系统 :

    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播放器。组成部分html :

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

    我试图在另一个模板的组件中使用它。例如内部 我的组成部分输电系统 的模板:

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

    我正在 Cannot read property 'nativeElement' of undefined 甚至认为我设法使用了 ngAfterViewInit . 如果在触发前设置超时,也会发生同样的情况 new Player()... .

    我在上发现此问题 vimeo/player.js issues 但这对我没有帮助。

    编辑1 :

    ERROR TypeError: __WEBPACK_IMPORTED_MODULE_1__vimeo_player__.Player is not a constructor .

    1 回复  |  直到 7 年前
        1
  •  2
  •   AndreaM16    7 年前

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

    虽然我找不到好的文档,但下面是ViewChild documentation . 在他们的文档中有许多不同的地方,他们将其与不同的选择器类型一起使用。正如您从文档中看到的那样,它将接受一种在这里似乎不适用的类型,因为您没有选择自定义组件。上面的语法是我在使用字符串选择元素时最常见的语法。

    关于第二次编辑,请尝试导入 Player import * as Player from '@vimeo/player/dist/player.js';