Процесс начальной загрузки Angular 2

Я хочу сделать запрос AJAX перед вызовом метода начальной загрузки в Angular 2, чтобы загрузить приложение при загрузке страницы.

Есть ли какие-нибудь крючки, которые я могу прослушать, чтобы сделать это с помощью Angular? Я знаю, что мог бы обернуть его в ajax-запрос ванильного javascript, но я подумал, что, возможно, есть стандартный способ сделать это с Angular 2. Мне нужно получить файл конфигурации с сервера, прежде чем запускать приложение Angular 2.


person HomeBrew    schedule 10.02.2016    source источник
comment
С какой целью вы этого хотите? Разве вы не хотите, чтобы Angular что-нибудь отображал? Было бы более эффективно, если бы Angular мог инициализировать себя, пока браузер бездействует, ожидая ответа сервера.   -  person Günter Zöchbauer    schedule 10.02.2016
comment
Аналогичный вопрос и неоднократно упоминаемый stackoverflow.com/questions/34731869/.   -  person Günter Zöchbauer    schedule 10.02.2016
comment
У меня есть объект конфигурации, который возвращается с сервера. Объект содержит флаги функций, которые сообщают компонентам, например, что они должны показывать и скрывать. При загрузке первой страницы я хотел бы иметь эту конфигурацию до того, как компоненты начнут загружаться сами. На данный момент, если я делаю это в компоненте приложения, уже слишком поздно, но я все еще изучаю это.   -  person HomeBrew    schedule 10.02.2016
comment
Вы можете просто обернуть содержимое шаблона вашего AppComponent большим ngIf и, когда прибудет конфигурация, переключить связанный флаг.   -  person Günter Zöchbauer    schedule 10.02.2016
comment
Спасибо, мне это нравится. Это должно решить эту проблему, хотя я надеялся, что для этого будет какой-то вариант на основе Angular. Я сделаю это сейчас.   -  person HomeBrew    schedule 10.02.2016


Ответы (1)


Насколько я знаю, Angular не предоставляет специального хука для этого варианта использования.
Простой «обходной путь» — просто обернуть содержимое шаблона корневого компонента с помощью ngIf:

@Component({
  selector: 'my-app',
  template: `
<div *ngIf="_config">
  ...
</div>`
...
)}
export class MyApp {
  private _config;
  constructor(configService:ConfigService) {
    configService.change.subscribe(value) => {
      this.config = value;
    });
  }
}
person Günter Zöchbauer    schedule 10.02.2016