Javascript 如何限制延迟加载模块的加载,直到在angular中解析api中的一些数据?

Javascript 如何限制延迟加载模块的加载,直到在angular中解析api中的一些数据?,javascript,angular,typescript,lazy-loading,Javascript,Angular,Typescript,Lazy Loading,我有一个延迟加载的模块。我想在加载模块之前加载一些数据。我尝试了app_初始值设定项,但它不起作用,因为我在AppModule中已经有了app_初始值设定项。有什么方法可以做到这一点吗?您可以使用一个解析器,在模块加载之前处理您的数据,并导航到您完全加载的特定路径 分解器 import { Injectable } from '@angular/core'; import { APIService } from './api.service'; import { Resolve } from

我有一个延迟加载的模块。我想在加载模块之前加载一些数据。我尝试了app_初始值设定项,但它不起作用,因为我在AppModule中已经有了app_初始值设定项。有什么方法可以做到这一点吗?

您可以使用一个解析器,在模块加载之前处理您的数据,并导航到您完全加载的特定路径

分解器

import { Injectable } from '@angular/core';
import { APIService } from './api.service';

import { Resolve } from '@angular/router';

import { ActivatedRouteSnapshot } from '@angular/router';

@Injectable()
export class APIResolver implements Resolve<any> {
constructor(private apiService: APIService) {}

 resolve(route: ActivatedRouteSnapshot) {
  return this.apiService.getItems(route.params.date);
  }
}
以及访问所需组件中的已解析数据

import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute) { }
items: any[];

ngOnInit() {
 this.items= this.route.snapshot.data.items;
}
在给定模块中使用带有解析器的组件不会初始化该模块,直到解析了所有数据


您还可以检查

您可以使用一个解析器,在模块加载之前处理您的数据,并导航到已完全加载的特定路径

分解器

import { Injectable } from '@angular/core';
import { APIService } from './api.service';

import { Resolve } from '@angular/router';

import { ActivatedRouteSnapshot } from '@angular/router';

@Injectable()
export class APIResolver implements Resolve<any> {
constructor(private apiService: APIService) {}

 resolve(route: ActivatedRouteSnapshot) {
  return this.apiService.getItems(route.params.date);
  }
}
以及访问所需组件中的已解析数据

import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute) { }
items: any[];

ngOnInit() {
 this.items= this.route.snapshot.data.items;
}
在给定模块中使用带有解析器的组件不会初始化该模块,直到解析了所有数据


您也可以检查

我认为这不是实现这一目标的好方法。因为在lazyloaded模块内可能有多条路由。在这种情况下,我应该怎么做,在每个路由中使用路由冲突解决程序,并在每个路由组件中处理已解析的数据?好的,只有当您导航到具有冲突解决程序的路由时,才会触发冲突解决程序。您不需要在所有路由上使用解析器。如果希望在路线上导航后加载数据,您仍然可以提取数据并使用占位符,直到提取数据为止,如微调器或占位符。你订阅了它,当你有了结果,你就删除了占位符或喷丝头。我认为这不是实现这一点的好方法。因为在lazyloaded模块内可能有多条路由。在这种情况下,我应该怎么做,在每个路由中使用路由冲突解决程序,并在每个路由组件中处理已解析的数据?好的,只有当您导航到具有冲突解决程序的路由时,才会触发冲突解决程序。您不需要在所有路由上使用解析器。如果希望在路线上导航后加载数据,您仍然可以提取数据并使用占位符,直到提取数据为止,如微调器或占位符。您可以订阅它,并在获得结果后删除占位符或微调器