.l-main-section
p.
Mission: By the end of this chapter, you should be able to create a child component and render
it within a parent component. You should also be able to bind to the child component.
.l-sub-section
h3#section-examples Examples:
ul
li
a(href='') TypeScript
li
a(href='') ES5
p.
As mentioned earlier, you build Angular applications as a tree of nested components. You've seen how to create
a top-level component. You add child components to a parent component by using them in the parent component's
template.
p.
Given a bootstrapping template with a <parent>
tag in the body, you can create a parent
component that uses a <child>
component like so:
pre.prettyprint.linenums.lang-javascript
code.
//ES5
function ParentComponent() {
this.message = "I'm the parent";
}
ParentComponent.annotations = [
new angular.Component({
selector: "parent"
}),
new angular.View({
template:
'<h1>{{ message }}</h1>' +
'<child></child>',
directives: [ChildComponent]
})
];
pre.prettyprint.linenums.lang-typescript
code.
//TypeScript
@Component({
selector: 'parent'
})
@View({
template: `
<h1>{{ message }}</h1>
<child></child>
`,
directives: [ChildComponent]
})
class ParentComponent {
message: string;
constructor() {
this.message = "I'm the parent";
}
}
p You then just need to write the ChildComponent
class to make it work:
pre.prettyprint.linenums.lang-javascript
code.
//ES5
function ChildComponent() {
this.message = "I'm the child";
}
ChildComponent.annotations = [
new angular.Component({
selector: "child"
}),
new angular.View({
template: '<p> {{ message }} </p>'
})
];
pre.prettyprint.linenums.lang-typescript
code.
//TypeScript
@Component({
selector: 'child'
})
@View({
template: `
<p> {{ message }} </p>
`
})
class ChildComponent {
constructor() {
this.message = "I'm the child";
}
}
p.
Notice that in addition to using the <child>
element in the parent template, you also need to
add ChildComponent
in ParentComponent
's list of directives
p.
[TODO: Motivate communication between components with iterator example that passes index to the child]