Можно ли использовать сервис в таком формате?

165
23 июля 2018, 11:50

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

// Обращение к сервису из компонента
initItem() {
  this.availableActions = {
    Purchased: this.siteService.getClientDetails().RegistryItemSupportPurchasedInStore,
    ChipIn: this.siteService.getClientDetails().RegistryItemSupportChipIn,
    GiftIt: this.siteService.getClientDetails().RegistryItemSupportGiftIt
}

// Сам сервис выглядит как-то так
getClientDetails(): M.ClientDetails {
  return this.clientDetails;
}
initSite(siteId: number): Observable<void> {
  return new Observable<void>(o => {
    this.net.getClientDetails(siteId).subscribe(clientDetails => {
        this.clientDetails = clientDetails;
        // Init feature configuration
        o.next();
        o.complete();
    });
  });
}

Меня напрягает прежде всего вот эта вот конструкция: this.siteService.getClientDetails().RegistryItemSupportChipIn

Выходит, что каждое свойство объекта притягивается через шпагат из сервиса.

Answer 1

Если очень важна любая возможная производительность - лучше сделать один запрос компонента, и работать с ним, если нет, то можно и так.

Если это все поля, то можно просто this.obj = service.getObj().

READ ALSO
Переинициализировать таблицу Datatebles при её обновлении

Переинициализировать таблицу Datatebles при её обновлении

У меня есть таблицаНе подскажете, как при нажатии на Save сделать так, чтобы страница обновлялась? Используется Datatables

191
не проигрывает audio при вызове из JS

не проигрывает audio при вызове из JS

Сайт на aspnet mvc, нужно сделать звуковое сопровождение если новые данные добавились в таблицу

179
Как сделать стрелки slick slider в отдельном контейнере?

Как сделать стрелки slick slider в отдельном контейнере?

Как на картинке нужно чтобы стрелки находились в каком-либо блоке оберткеА этот сам блок был в контейнере контента

234
ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/run/mysqld/mysqld.sock&#39; (111 &ldquo;Connection refused&rdquo;)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 “Connection refused”)

Пытался поставить на линукс phpmyadminВначале была ошибка, что нет данного файла или каталога, сейчас жалуется на это

175