javascript - Angular 2 在渲染元素后调用 jQuery - 在使用 API 之后

标签 javascript jquery angular

我的 Angular2 应用程序使用 RESTful API,然后创建一堆 <select>基于结果的元素。我正在尝试对这些 <select> 调用 jQuery 函数元素,但看起来 jQuery 函数执行得太晚了。我试着把函数放在 ngAfterContentInit 中但这没有用。把它放在 ngAfterViewChecked卡住了我的浏览器。

页面呈现后,如果我将 jQuery 函数粘贴到控制台中,一切正常,所以我知道我的函数和一切都正常运行。他们的订单可能是乱七八糟的。

在我的组件中:

ngOnInit() {
  this.myService.getAll().subscribe(
           data => this._data = data,
           error => this._error = "invalid.");
}

ngAfterViewInit() {
  $("select").select2(); // <--- jQuery function I need to execute after rendering
}

在我的模板中:

<select *ngFor="let d of _data">...blah blah</select>

最佳答案

这应该适合你:

@ViewChild('select') selectRef: ElementRef;
constructor(private myService: MyService, private ngZone: NgZone) {}

ngOnInit() {
  this.myService.getAll().subscribe(data => {
    this.options = data;
    // waiting until select options are rendered
    this.ngZone.onMicrotaskEmpty.first().subscribe(() => {
      $(this.selectRef.nativeElement).select2(); 
    });
  });
}

Plunker Example

关于javascript - Angular 2 在渲染元素后调用 jQuery - 在使用 API 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40938422/

相关文章:

html - 删除出现在启动画面之前的白屏

angular - 在 Angular 2 及更高版本中访问 Azure Web App 设置的最佳方法

javascript - PHP 生成下载链接

php - 服务器端与客户端自动完成

javascript - 如何编写正则表达式来匹配不跟随另一个 "\n"的 "\n"?

c# - 母版页通过 Javascript 对内容页的访问控制

javascript - 谷歌浏览器和 Chrome 中不支持不连续选择错误

angular - Karma、Angular 7 和 FontAwesome 问题无法绑定(bind)到 'icon',因为它不是 'fa-icon' 的已知属性

javascript - 外部网站的html2canvas截图

javascript - 样式化 Javascript 下拉菜单