我有模块,该模块在加载时是解析服务,并且在该模块中有很多组件,但是我想解析相同的服务每次加载 TrainingsComponent 时。因此,问题在于,如果我打开 TrainingsComponent ,这将是对服务的双重查询。 为模块下载服务很重要,因为组件中使用了该服务中的数据,而在TrainingsComponent中下载数据也很重要,因为我想每次每次都从服务中获取新数据。 那我该怎么办呢?
const routes: Routes = [
{
path: '',
resolve: {
setup: GamesListService, MissionsListService, TestService, EvolutionService
},
children: [
{
path: '',
component: TrainingsComponent,
resolve: {
setup: GamesListService, MissionsListService, TestService
},
},
{
path: 'mission-study',
component: MissionStudyComponent
},
{
path: 'sphere/:sphereAlias',
component: SingleSphereComponent
}
]
}
];
答案 0 :(得分:1)
您应该考虑拆分服务。为要加载到模块上的数据创建单例服务,为每次加载请求时的数据创建另一个服务。如果您在那里有普通的东西,请将它们放在基类中并进行扩展。
另一种解决方案是不从服务端发出请求。
将该代码放入您的服务中
export class ApiService {
private url = 'api/url';
constructor(private http: HttpClient) {}
load(): Observable<any> {
return this.http.get<any>(`${this.url}`); }
}
}
代替:
export class ApiService {
private url = 'api/url';
constructor(private http: HttpClient) {}
load(): Observable<any> {
return this.http.get<any>(`${this.url}`).pipe(...);
}
}