меню

Разрешение данных это процесс их получения перед активацией роута. В приложении возможна задержка перед тем, как данные будут предоставлены сервером. Для того, чтобы не показывать пользователю пустую страницу, роутер может реализовать интерфейс Resolve и получить все необходимые данные до момента активации роута. Таким образом, пользователь сразу увидит контент страницы на которую перешел.

Создадим сервис с интерфейсом Resolve \app\servers\server\server-resolver.service.ts:

 
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
  import { Observable } from 'rxjs/Observable';
  import { Injectable } from '@angular/core';

  import { ServersService } from '../servers.service';

  interface Server {
    id: number;
    name: string;
    status: string;
  }

  @Injectable()
  export class ServerResolver implements Resolve {
    constructor(private serversService: ServersService) {}

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | Server {
      return this.serversService.getServer(+route.params['id']);
    }
  }
 

Зарегистрируем его в провайдерах AppModule.

Затем в Routes добавим ключ resolve:

 
{path: ':id', component: ServerComponent, resolve: {server: ServerResolver}}
  

Перепишем ngOnInit компонента:

  
ngOnInit() {
  this.route.data
 .subscribe(
   (data: Data) => {
   this.server = data['server'];
   }
 );
  // const id = +this.route.snapshot.params['id'];
  // this.server = this.serversService.getServer(id);
 // this.route.params
  //   .subscribe(
  //     (params: Params) => {
  //       this.server = this.serversService.getServer(+params['id']);
  //     }
  //   );
}
  
Помощь сайту
ЮMoney:
4100 1180 7209 833
Карта Сбербанк:
2202 2080 6183 7127

Возможно, вам будет интересно

Observable. Subscribe и Unsubscribe

Stream и работа с Observable в Angular. Пример отписки в ngOnDestroy()

15 Angular директив на каждый день

Пользовательские директивы (Custom Directives) - мощная функция в Angular, которая позволяет расширять функциональность HTML-элементов. Они предоставляют возможность создавать повторно используемые компоненты, добавлять функциональность к существующим элементам и улучшать модульность и поддерживаемость вашего приложения на Angular. В этой статье мы рассмотрим пользовательские директивы в Angular и предоставим 15 примеров из реального мира, чтобы помочь вам овладеть этой важной концепцией.

Создание custom form field control (ControlValueAccessor)

ControlValueAccessor - связующее звено между Angular forms API и нативным DOM элементом. Чтобы Angular знал об новом field control необходимо зарегистрировать NG_VALUE_ACCESSOR провайдер.

Route. Контроль навигации с помощью сервиса

Деактивации роута в Angular5 и контроль навигации