Angular. Редирект по условию

import { ChangeDetectionStrategy, Component } from '@angular/core';
import { Router } from '@angular/router';

import { APIService } from 'api';

/**
 * Компонент используется для условного перенаправления пользователя
 * с корневого url адреса. Зависимость от количества:
 * 0 - dashboard
 * 1 - карточка 
 * 2 и более - список
 */
@Component({
  selector: 'app-welcome',
  template: `<preloader size="large" [loading]="true"></preloader>`,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class WelcomeComponent {
  constructor(router: Router, someApi: APIService) {
    someApi.getList().subscribe(res => {
      const count = res.size;
      if (count === 0) {
        router.navigate(['/dashboard']);
      }
      if (count === 1) {
        const id = res.list[0].id;
        router.navigate([`/thing/${id}/overview`]);
      }
      if (count > 1) {
        router.navigate(['/thing/list']);
      }
    });
  }
}

Redirect user with router depending on logged in status

Похожие записи

Переиспользуемые анимации в Angular

Для создания анимации используется функция animation(). Для её использования — useAnimation(). Приводится пример переиспользуемой анимации, а также создание анимации через литерал объекта.

09 октября 2018 г. в Angular

Об subscribe() vs async

О предпочтительности использования async pipe. При OnPush стратегии не требуется вызывать markForCheck() внутри подписки +решение с несколькими | async pipes развёрнутых в одну переменную (внутри шаблона).

05 января 2019 г. в Angular

Angular routerLink conditionally

<a [routerLink]="myVar ? '/home' : null" routerLinkActive="is-active">Home</a>
or
<a [routerLink]="myVar ? ['/home'] : []">Home</a>
02 сентября 2019 г. в Angular

Angular environment service

Использование сервиса для окружения вместо прямой ссылки на environment.ts

26 января 2020 г. в Angular

Angular Resolver

Resolver гарантированно получает асинхронные данные до создания компонента исходя из параметров маршрута.