У меня есть свойство в компоненте верхнего уровня, который использует данные из источника HTTP, например, так (это в файле с именем app.ts
):
import {UserData} from './services/user-data/UserData';
Component({
selector: 'app', // <app></app>
providers: [...FORM_PROVIDERS],
directives: [...ROUTER_DIRECTIVES],
pipes: [],
template: require('./app.html')
})
@RouteConfig([
// stuff here
])
export class App {
// Please note that UserData is an Injectable Service I have written
userStatus: UserStatus;
constructor(private userData: UserData) {
this.userStatus = new UserStatus();
}
ngOnInit() {
this.userData.getUserStatus()
.subscribe(
(status) => {
this.userStatus = status; // I want to access this in my Child Components...
},
(err) => {console.log(err);},
() => {console.log("User status complete"); }
);
}
}
Теперь у меня есть другой Компонент, который является прямым потомком Компонента верхнего уровня, и в нем я хотел бы получить доступ к родительскому свойству ' userStatus
', вот дочерний:
Component({
selector: 'profile',
template: require('app/components/profile/profile.html'),
providers: [],
directives: [],
pipes: []
})
export class Profile implements OnInit {
constructor() {
}
ngOnInit() {
// I want to have access with the parent App Component, 'userStatus' propety here... I only want to read this property
}
}
Теперь в Angular 1.x это было бы легко, поскольку я мог ссылаться на $parent
в моем дочернем контроллере или (ANTI PATTERN ALERT !!!) Я мог бы быть настолько глуп, чтобы поместить эти данные в мой $rootScope
.
Каков наилучший способ доступа к родителю в Angular 2?