我有一个组件SurveyComponent
和一个服务SurveyService
。 SurveyService
会从JSON加载一些数据。
我将SurveyService
中的SurveyComponent
添加到构造函数中。
constructor(public surveyService: SurveyService) {}
在SurveyService
的构造函数中,我加载了一些数据。
constructor(private storageService: StorageService) {
this.finishedSurveys = [];
this.loadCurrentSurvey();
this.loadFinishedSurveys();
}
我也将SurveyService
放入了app.module
:
.....providers: [SurveyService].....
但是该组件在服务之前已加载,因此我的组件中没有数据。为什么会发生?我可以解决这个问题吗?
答案 0 :(得分:0)
您可以对角路由器使用resolve。例如。 使像这样的类APIResolver
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);
}
}
然后,像解析您的相应路由器一样
{
path: 'items',
component: ItemsComponent,
resolve: { items: APIResolver }
}
答案 1 :(得分:-1)
您可以参考此link来使用OnInit
@Component({selector: 'my-cmp', template: `...`})
class MyComponent implements OnInit {
ngOnInit() {
you call the service that you want to execute
}
}