Как получить данные словарей один раз для всех компонентов в модуле Angular 7 - PullRequest
0 голосов
/ 11 января 2019

Я ищу лучшее решение для кейса - получение словарей, которые можно использовать в некоторых компонентах.

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

1 Ответ

0 голосов
/ 11 января 2019

Создайте сервис, где вы можете управлять всеми взаимодействиями со своими словарями (загрузка из API, свойство сервиса магазина и т. Д.). Например, это может быть так:

import { Injectable } from '@angular/core';

@Injectable()
export class DictionaryService {

  private dictionary = null;
  constructor() { }

  getDictionary() {
    if (!this.dictionary) {
      this.fetchDictionary();
    }

    return this.dictionary;
  }

  private fetchDictionary() {
    //load dictionary from somewhere you stored it and put result in this.dictionary property
  }
}

После того, как вы можете позвонить в службу в компоненте:

export class SomeComponent implements OnInit {

  constructor(public dictService: DictionaryService) {}

  ngOnInit() {

  }
}

Сделать свойство сервиса в компоненте с модификатором доступа общедоступным, чтобы получить доступ к его методам в шаблоне напрямую.

...