Могу ли я разрешать службы каждый раз, когда загружаю компонент, и один раз, когда загружаю модуль вместе без двойного запроса? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть модуль , который разрешает службы при загрузке, и имеет много компонентов в этом модуле, но я хочу разрешить такие же службы вкаждый раз, когда я загружаю 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
      }
    ]
  }
];

1 Ответ

0 голосов
/ 14 февраля 2019

Вы должны рассмотреть разделение услуг.Создайте единый сервис для данных, которые вы хотите загрузить в модуль, и еще один для данных, которые вы хотите каждый раз загружать в запрос.Если у вас есть общие вещи, поместите их в базовый класс и расширьте его.

Другое решение - не отправлять запрос со стороны службы.

Поместите этот код в ваш сервис:

 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(...); 
   }
 }
...