javascript - 在 angular2 中包装第 3 方组件

标签 javascript angular

我想在我的 angular2 应用程序中使用第三方 ui 元素/组件,例如spin.js .要使用这个库,我必须直接访问 DOM,这并不是它在 angular2 中应该完成的方式(出于多种原因,例如服务器端渲染):

var target = document.getElementById('foo')
var spinner = new Spinner(opts).spin(target);

关于如何在 angular2 中处理此类第三方库有什么建议吗?或者直接 DOM 操作是目前唯一的方法吗?

最佳答案

我会将其包装到自定义指令中:

@Directive({
  selector: '[spinner]'
})
export class SpinnerDirective {
  constructor(private elementRef:ElementRef.nativeElement) {
  }

  ngAfterViewInit() {
    var spinner = new Spinner(opts).spin(this.elementRef);
  }
}

并以这种方式使用它:

@Component({
  (...)
  template: `
    <span spinner>...</span>
  `,
  directives: [ SpinnerDirective ]
})
export class SomeComponent {
  (...)
}

关于javascript - 在 angular2 中包装第 3 方组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36984382/

相关文章:

javascript - 如何从对象数组中的每个对象中取出两个元素并创建一个新元素

javascript:弹出一个窗口并保存其html代码

javascript - 使用jquery创建元素时出错

javascript - jQuery 动画在 anchor 标记或 anchor 标记子项中不起作用

angular - 如何在 <p-datatable> 中使用模板

javascript - 应用状态接口(interface)中的 NgRx 根状态键

json - Angular 2/Web Api - json 解析错误语法错误意外结束输入

components - Angular 2 - 嵌入子组件

javascript - 像 Angular5 中的 DOM 选择的 Jquery

javascript - 如何在 React Native 中将图像居中放置在 View 中