angular2 можно ли обмениваться наблюдаемыми данными с другими компонентами?

У меня есть служба, которая ПОЛУЧАЕТ пользователя через RESTful API. Он использует реализацию Observable.

У меня также есть родительский компонент с 8 дочерними компонентами.

Я хочу знать, могу ли я и как сделать один HTTP-запрос в родительском компоненте, чтобы получить пользователя и поделиться им с его дочерними компонентами.

Вот вызов для определения пользователя в родительском:

this.userApi.getUser(id)
        .subscribe(response => {this.user = response;},
                    error => error);

Я импортировал и внедрил пользовательскую модель в конструктор() каждого компонента следующим образом:

constructor(public user: User){}

Как только пользователь определен в родительском компоненте, у меня есть кнопка, которая запускает console.log(user) в дочерних компонентах, она возвращается как undefined.


person TrieuNomad    schedule 17.08.2016    source источник
comment
Вы на NG2 RC4 или RC5?   -  person John Siu    schedule 18.08.2016
comment
Опубликуйте свою реализацию getUser()   -  person kabangi julius    schedule 18.08.2016


Ответы (1)


Если вы хотите сделать только один HTTP-запрос и поделиться пользовательскими данными, создайте службу, в которой будет храниться ваш пользовательский объект. Он будет доступен для каждого компонента (корневого и всех дочерних) в модуле.

Также вы можете использовать идею магазина ngRx - https://github.com/ngrx/store< /а>. Преимущество этого решения в том, что вы можете подписаться на хранилище пользователей в каждом фрагменте приложения.

person Kamil Myśliwiec    schedule 17.08.2016