html5 – 如何访问Angular2中的HTML视频元素

前端之家收集整理的这篇文章主要介绍了html5 – 如何访问Angular2中的HTML视频元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有 HTML5<视频> Angular2组件中的元素.我需要访问它以便在允许用户将其共享到Twitter之前检查持续时间.

有没有办法通过模型绑定或直接访问DOM,我可以在组件的支持类中获取此信息?

我尝试使用ng-model绑定它,就像在组件的模板中一样:

<video controls width="250" [(ng-model)]="videoElement">
    <source [src]="video" type="video/mp4" />
</video>

并在组件的类(TypeScript)中:

videoElement: HTMLVideoElement;

这给了我这个错误:EXCEPTION:[null]中的”没有值访问器

我只能通过给视频元素一个id并使用document.getElementById(“videoElementId”)来访问它,但似乎必须有更好的方法.

解决方法

您可以注入ElementRef然后访问元素,如
element.nativeElement.shadowRoot.querySelector('video').duration;
// with encapsulation: ViewEncapsulation.Native

和其他视图封装模式可能

element.nativeElement.querySelector('video').duration;

(虽然还没试过).

这也应该有用

<video (durationchange)="durationChangeEventHandler($event)"></video>

然后使用$event.target访问它

使用指令(Dart代码中的示例)

@Directive(selector: 'video')
class VideoModel {
  ElementRef _element;
  VideoModel(this._element) {
    VideoElement video = _element.nativeElement as VideoElement;
    video.onDurationChange.listen((e) => duration = video.duration);
  }

  num duration;
}

在您的组件中添加

@Component(
    selector: 'my-component',viewProviders: const [VideoModel],directives: const [VideoModel],templateUrl: 'my_component.html') 
class MyComponent {
    @ViewChild(VideoModel) 
    VideoModel video;
}

现在您可以使用video.duration访问持续时间

原文链接:https://www.f2er.com/html5/240978.html

猜你在找的HTML5相关文章