在IE11中,@HostListener('window:load')装饰器不被支持。但是,你可以使用以下方法来修复它:
例如,假设你有一个名为MyComponent的组件,并希望在页面加载完成后执行某些操作。你可以这样修改代码:
import { Component, HostListener } from '@angular/core';
@Component({
selector: 'app-my-component',
template: 'My Component
'
})
export class MyComponent {
constructor() {}
@HostListener('document:DOMContentLoaded')
onWindowLoad() {
// 在IE11中触发
console.log('页面加载完成');
// 执行其他操作
}
}
APP_INITIALIZER
提供商来解决它。这将确保在应用程序启动期间执行指定的操作。首先,创建一个初始化函数,并确保该函数返回一个Promise:
export function appInitializer() {
return () => {
return new Promise((resolve, reject) => {
// 执行你希望在应用程序加载时执行的操作
console.log('应用程序加载完成');
// 执行其他操作
resolve();
});
};
}
然后,在你的AppModule
中使用APP_INITIALIZER
提供商来调用初始化函数:
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { appInitializer } from './app.initializer';
import { AppComponent } from './app.component';
@NgModule({
imports: [BrowserModule],
declarations: [AppComponent],
providers: [
{
provide: APP_INITIALIZER,
useFactory: appInitializer,
multi: true,
},
],
bootstrap: [AppComponent]
})
export class AppModule {}
这样,无论在哪个浏览器中,都可以在Angular应用程序加载完成后执行指定的操作。