Angular Universal: привязка жизненного цикла, когда window api становится доступным

#angular #angular-universal #server-side-rendering

#angular #angular-универсальный #рендеринг на стороне сервера

Вопрос:

Я реализовал рендеринг на стороне сервера с помощью Angular Universal. У меня есть метод, который я хочу запустить, когда DOM становится интерактивным и становятся доступными такие API браузера, как window.navigator (потому что я хочу что-то сделать с пользовательским языком).

Существует ли привязка жизненного цикла или какой-либо другой способ прослушивания, когда я могу использовать window.navigator ?

Ответ №1:

Я протестировал локальную работу своего сервера узлов и обнаружил, что это ngOnInit() подходящее место для запуска кода navigator. ngOnInit() вызовется на стороне сервера, но будет вызван снова в браузере, поэтому вам нужны проверки достоверности в navigator:

 ngOnInit() {
  if (this.window amp;amp; this.window.navigator) {
    // do stuff
  }
}
  

Стоит отметить, что я использую поставщика окон для доступа к window —

 constructor(@Inject(WINDOW) private window: any) { }