我理解角是一个包含多个组件的页面应用程序,并使用路由在页面之间进行交互。
我们有一个这样的角度应用程序。其中一个要求是,在特定组件上,我们需要将eventListener添加到DomContentLoaded事件中。
由于index.html页面之前已经加载(因此DomContentLoaded事件被触发),所以我们遇到了一个问题。
我找不到重新触发DomContentLoaded事件的方法。
发布于 2018-09-04 09:30:22
在创建第一个组件之前触发的DomContentLoaded事件。但是,您可以使用ngAfterViewInit()方法。ngAfterViewInit()是一个回调方法,它在角已经完成组件视图的初始化之后立即调用。在实例化视图时只调用一次。
class YourComponent {
ngAfterViewInit() {
// Your code here
}
}如果您确实需要捕获DomContentLoaded事件,请在main.ts文件中执行它。
发布于 2018-09-04 09:29:14
我不知道,为什么你需要听DomContentLoaded的角度,因为那里有很多函数,这取决于你使用的是哪个版本的角。
export class SomeComponent implements AfterViewInit {
ngAfterViewInit(): void {
}}
但是,您可以使用*ngIf (Angular2+)或ng-if (AngularJS)重新触发组件的呈现。只需在那里放置一个布尔值,并在事件上切换布尔值即可。
发布于 2018-09-04 09:29:25
请不要使用这样的听者,他们(经常)是不需要的角。尝试使用组件生命周期挂钩。
在您的示例中,我建议使用ngAfterViewChecked(),它在组件完成呈现时触发。
import { Component, AfterViewChecked } from '@angular/core';
@Component({
...
})
export class WidgetLgFunnelsComponent implements AfterViewChecked {
ngAfterViewChecked() {
console.log('Component finished rendering!')
}
}https://stackoverflow.com/questions/52162970
复制相似问题