Как стать автором
Обновить

Комментарии 12

Имхо, тема необходимости использования NgRX не раскрыта
Уже давно 6 ангуляр вышел, а в статье упоминаются «новые» интерцепторы, и ни слова о providedIn: ‘root’ и тд
Почему нет ни одного совета по организации маршрутизации? До сих пор не удалось найти или придумать наиболее удачный способ маршрутизации в приложении. Стандартный модуль кажется слишком громоздким. Хотелось бы иметь модуль или провайдер простой и расширяемый как angular-ui.
А можете более подробно описать чем не устраивает роутинг в Angular и чем angular-ui роутинг лучше на ваш взгляд?
В angular-ui нравится, что единицей является Стейт, и для навигации достаточно указать его имя и необходимые параметры. То есть компоненты не знают на какой url они инициируют переход. В 2+ же для навигации нужно использовать url, причем переход на рутовый, родительский и дочерний стейты относительно текущего отличается, и всю эту реализацию приходится хранить в компоненте.
Спасибо! Писалось по старой версии.

Я бы предостерег от использования index.ts файлов, т.к. импорт из такого файла, в котором лежит "много чего" (обычно в корневых ре-экспортах), предотвращает нормальную работу tree shaking'а. Пол дня выяснял, почему у меня стал такой здоровый бандл и tree shaking перестал работать. Так что лучше полностью отказаться от index.ts файлов в большинстве случаев.

Странно. По идее это баг tree shaking'а. Или особенность кода. Например, тот же Rx v6 тянет все свои классы из единственного 'rxjs', и это не приводит к тому, что единственный импорт тянет за собой всю библиотеку.

Мне кажется, что лучше разобраться в чем причина, чем просто отказываться от столь удобной возможности организации кода.

В дополнение к takeUntil и takeWhile для автоматической отписки можно использовать подход untilDestroyed (статья).

Http Observable — финитный, а слушатели/наблюдатели (listeners) DOM событий — это инфинитные Observable.
Абсолютно верно!
Но дальше Вы даете пример с отпиской, где она не нужна.
Код из статьи
export class SomeComponent implements OnDestroy, OnInit {
  public user: User;
  private alive: boolean = true;

  public ngOnInit() {
    this.userService
      .authenticate(email, password)
      .takeWhile(() => this.alive)
      .subscribe(user => {
        this.user = user;
      });
  }

  public ngOnDestroy() {
    this.alive = false;
  }
}


Здесь нужно уточнять что у вас находится в «authenticate()». Если там просто HTTP запрос, то «takeWhile()» не обязателен. Имейте ввиду, что из-за таких туманных «best practice», людей не берут на работу, когда проверяющий тестовое задание начитается, но не поймет сути.
Уточню. Здесь отписка действительно нужна, но не потому что, если её не делать, то будет какая-то утечка памяти. Утечки не будет, просто отпиской мы предотвращаем выполнение куска кода в случае, если мы перешли на другой компонент, но запрос на предыдущем ещё не завершен (что всё-таки бывает не часто).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории