Есть родительский компонент {App}, в котором идёт запрос к серверу на получение информации о пользователе, авторизован он или нет, ответ записывает в {App.guest}:
import {Component} from 'angular2/core';
import {RouteConfig, Router, ROUTER_DIRECTIVES} from 'angular2/router';
import {FORM_PROVIDERS} from 'angular2/common';
import {Core} from './service/Core';
import {Home} from './home/home';
import {About} from './component/About';
import {Contacts} from './component/Contacts';
@RouteConfig([
{
path: '/',
component: Home,
name: 'Index'
},
{
path: '/about',
component: About,
name: 'About'
},
{
path: '/contacts',
component: Contacts,
name: 'Contacts'
},
{
path: '/**',
redirectTo: ['Index']
}
])
@Component({
selector: 'app',
providers: [ ...FORM_PROVIDERS, Core ],
directives: [ ...ROUTER_DIRECTIVES ],
template: require('./template/layout.html')
})
export class App {
public guest = true;
constructor(public serviceCore: Core) {
// Делаем запрос и записываем ответ в this.guest
}
login(login) {
return this.guest = login;
}
}
Мы находимся на странице '/contacts' отрабатывает компонент Contacts, из него не получается получить данные родительского компонента App, конкретно свойство guest.
import {Component} from 'angular2/core';
@Component({
selector: 'contacts',
template: require('../template/contacts.html'),
})
export class Contacts {
public title: string;
constructor() {
this.title = 'Контакты';
// Как вызвать this.guest из App
}
}
При этом нужно сделать так, чтобы изменяя свойства App.guest, оно автоматически менялось в дочерних компонентах.
Помогите разобраться с наследованием компонентов.
Пробовал через
@Injectable()
, наследует как сервис, но при изменении в родителе, дочерний элемент не перерисовывает.