Angular2 обеспечивает инъекции зависимостей от конструктора. Это означает, что инфраструктура будет искать поставщика в текущем инжекторе для каждого элемента, определенного как параметры конструктора.
При определении параметра типа TabContainer
в конструкторе TabPane
, который является суб компонентом TabContainer
один, Angular2 будет автоматически вводить экземпляр компонента родительский.
@Component({
selector: 'tab',
template: `
<div>Some tab</div>
`
})
class TabPane {
constructor(tabContainer:TabContainer) {
(...)
}
}
Angular2 позволяет также ссылаться на элементы на виду компонента. Используя декоратор @Query
, вы запрашиваете Angular2 для ссылки на компоненты определенного вида (TabPane
в вашем случае) из вида компонента и даже элементов. Ниже показано, как получить список всех компонентов типа TabPane
, которые используются в пределах TabContainer
.
@Component({
selector: 'tab-container',
template: `
<div>
<tab></tab>
<tab></tab>
</div>
`,
directives: [Tab]
})
class TabContainer {
constructor(@Query(TabPane) tabs:QueryList<TabPane>) {
}
}
В этом образце tabs
свойство будет содержать два элемента.
Что касается ссылок на родительские/дочерние элементы, вам нужно быть осторожными с циклическими зависимостями модулей. Я хочу сделать работу с вашим образцом, вам нужно иметь как TabContainer
, так и Tab
компонентов в том же модуле.
Надеется, что это помогает вам, Тьерри
https://angular.io/docs/ts/latest/api/core/Query-var.html – TGH