如何在Angular2中访问HTML视频元素

山姆

<video>在Angular2组件中有一个HTML5元素。我需要访问它以便在允许用户将其共享到Twitter之前检查持续时间。

是否可以通过模型绑定或直接访问DOM的任何方式在组件的支持类中获取此信息?

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

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

并在组件的类(TypeScript)中:

videoElement: HTMLVideoElement;

这给了我这个错误: EXCEPTION: No value accessor for '' in [null]

我可以通过给video元素一个id并使用document.getElementById("videoElementId")来访问它,但是似乎必须有一个更好的方法。

贡特·佐赫鲍尔(GünterZöchbauer)

您可以注入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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

访问Angular2模板中的特定数组元素

如何在Angular2中获取(DOM)元素的宽度

如何在Angular2中查找DOM元素的子代和父代

如何在Angular2 Typescript中更改HTML元素的readonly和required属性?

如何在Angular2中绑定原始HTML

Angular2:如何在angular2数据绑定中以html格式显示数据?

Ionic2 / Angular2 / TypeScript:如何在函数2016中访问DOM元素

如何在angular2组件中访问全局js变量

如何在Angular2中通过Observable通过id查找数组的元素

如何在angular2模板中使用Electron的webview html元素?

如何在angular2中的ngFor中显示1个元素?

我如何在angular2中访问嵌套的json数据

如何在Angular2中嵌入视频?

如何在angular2中的父组件中访问子组件HTML元素值?

如何在angular中使用plyr npm模块在Angular2中创建视频播放器?

如何在Angular2中操作HTML元素

如何在Angular2(ngx)中通过CSS选择器找到元素?

如何在angular2中获取html元素的宽度?

检查如何在Angular 5 HTML中访问数组元素

如何在Angular2 +中向动态创建的元素添加属性?

如何在Angular2 Dart中查询Dom元素?

如何在Angular2中使用<html>模板?

如何在Angular2组件的CSS中引用宿主元素?

如何在Angular2中为元素的class属性赋值

如何在Angular 2中访问json的元素

如何在angular2的表单元素中获取下拉列表选择的值

无法访问 angular2 中的 dom 元素

如何从 JSON 获取特定值并在 angular2 中绑定 HTML 元素中的值

如何在 Angular2 中从 HTML 获取对象