Enum
s являются статическими, поэтому вам нужно выяснить способ доступа к компонентам из статического контекста.
Вы можете создать класс с именем ApplicationContextProvider
, который реализует ApplicationContextAware
интерфейс.
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class ApplicationContextProvider implements ApplicationContextAware{
private static ApplicationContext appContext = null;
public static ApplicationContext getApplicationContext() {
return appContext;
}
public void setApplicationContext(ApplicationContext appContext) throws BeansException {
this.appContext = appContext;
}
}
, затем добавьте этот файл контекста вашего приложения:
<bean id="applicationContextProvider" class="xxx.xxx.ApplicationContextProvider"></bean>
после этого вы можете получить доступ к контексту приложения таким образом, как это:
ApplicationContext appContext = ApplicationContextProvider.getApplicationContext();
Вы можете просто добавить новую переменную для учета состояния «завершена загрузка».
Вот решение: добавьте finishedLoading: boolean = true;
к вашему классу. Тогда:
checkRouterEvent(routerEvent: Event): void {
if (routerEvent instanceof NavigationStart) {
this.finishedLoading = false;
this.loading = false;
setTimeout(() => {
if (!this.finishedLoading) {
this.loading = true;
}
} , 300);
}
if (routerEvent instanceof NavigationEnd ||
routerEvent instanceof NavigationCancel ||
routerEvent instanceof NavigationError) {
this.finishedLoading = true;
this.loading = false;
}
}