Angular 2: является ли хорошей практикой хранить данные, относящиеся к конкретному компоненту, в общей службе?

#angular

#angular

Вопрос:

В настоящее время у меня есть массив целых чисел в моем классе компонентов. Шаблон выполняет итерацию по этому массиву и отображает его данные.

Этот массив данных также требуется другим компонентам.

Рекомендуется ли хранить этот массив в службе в виде многомерного массива, чтобы другие классы компонентов могли его использовать? (многомерно, поскольку может присутствовать несколько экземпляров компонента)

Ответ №1:

Общие службы используются для совместного использования данных между компонентами. Но,

Остерегайтесь обновления приложения. Если вы обновите страницу, вы потеряете данные, совместно используемые с помощью общей службы.

Итак, вам нужно использовать другой механизм для хранения данных (с общей службой). например. Хранилище HTML5.

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

1. я думаю, это нормально, то же самое применимо и к данным, хранящимся в компоненте, верно?

2. Обязательно обратите внимание. Но я думаю, что это не то же самое с component.

Ответ №2:

В общем, да, службы используются для обмена данными между компонентами. Что вы могли бы рассмотреть, так это создание rxjs Subject в вашей общей службе.

Таким образом, компоненты могут subscribe обращаться к этому субъекту (наблюдаемому) и автоматически получать последнее значение.

Затем вы могли бы использовать async канал Angular 2 и заставить Angular 2 подписаться на эти наблюдаемые данные самостоятельно.

Подробнее о async канале: http://briantroncone.com/?p=623

Подробнее о темах rxjs: http://reactivex.io/rxjs/manual/overview.html#subject

Кроме того, в зависимости от ваших знаний о redux, я предлагаю вам ознакомиться ngrx/store с тем, что помогает вам управлять состоянием во всем вашем приложении.

https://github.com/ngrx/store