是否可以在组件之前加载服务?

时间:2019-04-03 11:37:35

标签: javascript angular

我有一个组件SurveyComponent和一个服务SurveyServiceSurveyService会从JSON加载一些数据。

我将SurveyService中的SurveyComponent添加到构造函数中。

constructor(public surveyService: SurveyService) {}

SurveyService的构造函数中,我加载了一些数据。

constructor(private storageService: StorageService) {

    this.finishedSurveys = [];

    this.loadCurrentSurvey();

    this.loadFinishedSurveys();

 }

我也将SurveyService放入了app.module

.....providers: [SurveyService].....

但是该组件在服务之前已加载,因此我的组件中没有数据。为什么会发生?我可以解决这个问题吗?

2 个答案:

答案 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 
  }
}