Подтвердить что ты не робот

Снова о глобальных данных в Angular2

Если мое приложение angular2 выглядит так, и блондинка на самом деле собирается поговорить с имбирем справа-середина, должны ли они организовать для него вечеринку? tree

Вывести события, использовать входы выходы - это angular2 способ? Данные должны передаваться от дочернего к родительскому корню, а затем от родителя к дочернему до точки? Я новичок здесь и часто хотел бы иметь какой-то глобальный объект, где я могу хранить некоторую информацию, которую все компоненты должны знать. Когда данные изменяются в этом глобальном объекте, он должен быть волшебным образом изменен во всех других сервисах и компонентах, которые он ввел. Например, вход в систему пользователя/выход из системы, или если он нажимает кнопку и т.д.

import {Injectable} from 'angular2/core';

@Injectable()
export object Globals {
    logged: false,
    showThatDiv: true
}

Но я где-то читал, что это метод Angular1, а не angular2. Это правильно? Или я ошибаюсь? Это не похоже на глобальный суп, просто глобальный объект состояния.

Например, теперь у меня есть эта структура:

|-root
  |-google api component
    |-google auth
    |-youtube api
      |-playlists
      |-video
  |-myComponent
    |-sub1
      |-sub2
        |-sub3
  |...

Компонент mySub1 должен знать, зарегистрирован ли пользователь, и если да, покажите (* ngIf) некоторый div в sub2. Или из компонента mySub3 call checkGauth() в службе googleAuth. Из компонента mySub2 добавьте видео в список воспроизведения YouTube и onAdded show results в sub2, или из sub3 создайте новый список воспроизведения и покажите его на суб2. Много вариантов.

Я устал писать код для всего этого. Это делает его более сложным. И иногда думают об этом:

 |-root
   |-google api component
   |-google auth
   |-youtube api
   |-playlists
   |-video
   |-myComponent
   |-sub1
   |-sub2
   |-sub3
   |...
4b9b3361

Ответ 1

Создание служб для каждого из ваших API - отличный способ изолировать компоненты от путаницы. В вашем случае вам нужно создать GoogleService, который может содержать ваш контекст в текущем состоянии приложения. Службы являются Inject-доступными для ваших компонентов, когда и где они необходимы.

Сказав, что нет тонкой линии, мы можем сделать в некоторых случаях. В этих случаях

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

  • Создать помощник, который инкапсулирует все ваши функции, связанные с вашей функцией. Обращайтесь к нему, используя импорт старой моды и используйте его на своих компонентах.

Вывести события, использовать входы выходы - это angular2 способ?

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

Данные должны передаваться от дочернего элемента к родительскому корню, а затем из от родителей к ребенку?

Пусть ребенок получает данные из родительского элемента через входы и возвращает результат в качестве обратных вызовов, Оформить этот блог, чтобы узнать, как это делается в приложении реального мира.

Надеюсь, это поможет вам начать. Добро пожаловать в Angular 2, вам понравится здесь!