синхронный http получить запрос в службе Angular 5? - PullRequest
0 голосов
/ 05 сентября 2018

У меня очень большой проект с большим количеством компонентов и сервисов.

Я хочу создать другую службу, которую используют все компоненты. Эта служба будет вызывать запрос http get, который извлекает порядок компонентов (например, конфигурацию), и в соответствии с этим компоненты будут упорядочены на странице. Я хочу сделать вызов синхронным, чтобы компоненты не загружались до получения заказа. Я хочу сделать это, потому что я не хочу мерцать дисплей после загрузки компонентов. в основном как синхронный вызов ajax.

Мой код как ниже

Услуги

import { Injectable } from "@angular/core";

@Injectable()

export class ConfigService {
    constructor() {

    }
    getUserConfigFromDB() {
        //http request
        ;

    }
}

Компонент

import { Injectable } from "@angular/core";
import {ConfigService} from "../app/services/ConfigService"

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})

export class AppComponent {
  title = 'app';

  constructor(private configService: ConfigService) { }

  ngOnInit() {
    this.configService.getUserConfigFromDB()
  }
}

Эта служба будет использоваться многими компонентами.

Заранее спасибо.

РЕДАКТИРОВАТЬ1: Я думаю, что я не был ясен. Я не могу ничего изменить в компонентах, кроме как вызвать метод getUserConfigFromDB (). Я ищу точную альтернативу ajax (async: false). Я хочу, чтобы страница зависла, пока я не получу ответ от API.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

В идеале вы должны создать ContainerComponent. Этот ContainerComponent вызовет метод, о котором вы говорите, и установит конфигурацию как свойство класса ContainerComponent.

Затем вы можете поместить все свои компоненты в div в шаблоне этого ContainerComponent с *ngIf на нем. Это будет отображаться, только если config установлен после вызова вашего метода обслуживания.

Я не совсем уверен, как вы планируете использовать этот config для заказа компонентов.

0 голосов
/ 05 сентября 2018

Вместо использования http-запроса синхронизации, просто поместите http-запрос в распознаватель. Страница не будет загружаться, пока распознаватель не извлечет данные, и, таким образом, вы не получите мерцание, о котором говорите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...