一旦 HTML 在 Angular 4 中完全动态呈现,如何在 jQuery 中调用函数?

Posted

技术标签:

【中文标题】一旦 HTML 在 Angular 4 中完全动态呈现,如何在 jQuery 中调用函数?【英文标题】:How can I call a function in jQuery once HTML is completely rendered dynamically in Angular 4? 【发布时间】:2018-06-12 01:10:59 【问题描述】:

我正在使用 Angular 4 作为我的 Web 模板。 一旦在构造函数中调用 HTTP get 方法,就会生成 html,其响应会创建 HTML。

以上工作正常。

我也在使用带有 Angular 的 jQuery 并尝试在此页面上初始化一个函数。

$(function() 
    Books.init();
);

我尝试在各种生命周期挂钩中调用上述代码。例如,ngOnInit()、ngOnChanges()、ngDoCheck、ngAfterViewInit()、ngAfterContentInit(),但在 API 响应完全呈现视图之前仍会调用代码。

有什么方法可以获取一个事件来确保视图完全呈现,然后我可以加载我的 jQuery?

请注意:我在 setTimeOut 调用中调用了这个函数,并有一小段时间延迟,这在其中起作用。

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 【参考方案1】:

我遇到了同样的问题。 我没有找到任何解决方案,所以我使用了变量。

首先计算要渲染的元素的长度。

bookCount: number = 0;

然后在ngAfterContentChecked()中

ngAfterContentChecked() 
if(this.bookCount > 0 && this.bookCount == document.getElementsByClassName('bk-book').length)

  this.getInitdata();

这暂时对我有用,仍在寻找更好的解决方案。

【讨论】:

以上是关于一旦 HTML 在 Angular 4 中完全动态呈现,如何在 jQuery 中调用函数?的主要内容,如果未能解决你的问题,请参考以下文章

CSS值不适用于Angular 4中动态注入的html div元素

一旦函数在 Angular 4 中返回,就继续执行

如何基于先前的服务器端调用创建动态 Angular JS 4 子组件

Angular完全销毁动态创建的组件

为啥 Angular 要求我们在声明数组和 entryComponents 数组中声明动态组件?

选择 -- 请选择 -- 作为 angular 4.0 html 表单中下拉列表的默认值