88 lines
2.5 KiB
Plaintext
88 lines
2.5 KiB
Plaintext
|
.l-main-section
|
||
|
|
||
|
h2#section-its-all-a-tree It's all a tree
|
||
|
|
||
|
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 <code><parent></code> tag in the body, you can create a parent
|
||
|
component that uses a <code><child></code> component like so:
|
||
|
|
||
|
code-tabs
|
||
|
code-pane(language="javascript" name="TypeScript" format="linenums").
|
||
|
//TypeScript
|
||
|
@Component({
|
||
|
selector: 'parent'
|
||
|
})
|
||
|
@View({
|
||
|
template: `
|
||
|
<h1>{{ message }}</h1>
|
||
|
<child></child>
|
||
|
`,
|
||
|
directives: [ChildComponent]
|
||
|
})
|
||
|
class ParentComponent {
|
||
|
message: string;
|
||
|
|
||
|
constructor() {
|
||
|
this.message = "I'm the parent";
|
||
|
}
|
||
|
}
|
||
|
code-pane(language="javascript" name="ES5" format="linenums").
|
||
|
//ES5
|
||
|
function ParentComponent() {
|
||
|
this.message = "I'm the parent";
|
||
|
}
|
||
|
ParentComponent.annotations = [
|
||
|
new angular.ComponentAnnotation({
|
||
|
selector: "parent"
|
||
|
}),
|
||
|
new angular.ViewAnnotation({
|
||
|
template:
|
||
|
'<h1>{{ message }}</h1>' +
|
||
|
'<child></child>',
|
||
|
directives: [ChildComponent]
|
||
|
})
|
||
|
];
|
||
|
|
||
|
|
||
|
p You then just need to write the <code>ChildComponent</code> class to make it work:
|
||
|
|
||
|
code-tabs
|
||
|
code-pane(language="javascript" name="TypeScript" format="linenums").
|
||
|
//TypeScript
|
||
|
@Component({
|
||
|
selector: 'child'
|
||
|
})
|
||
|
@View({
|
||
|
template: `
|
||
|
<p> {{ message }} </p>
|
||
|
`
|
||
|
})
|
||
|
class ChildComponent {
|
||
|
message: string;
|
||
|
constructor() {
|
||
|
this.message = "I'm the child";
|
||
|
}
|
||
|
}
|
||
|
code-pane(language="javascript" name="ES5" format="linenums").
|
||
|
//ES5
|
||
|
function ChildComponent() {
|
||
|
this.message = "I'm the child";
|
||
|
}
|
||
|
ChildComponent.annotations = [
|
||
|
new angular.ComponentAnnotation({
|
||
|
selector: "child"
|
||
|
}),
|
||
|
new angular.ViewAnnotation({
|
||
|
template: '<p> {{ message }} </p>'
|
||
|
})
|
||
|
];
|
||
|
|
||
|
|
||
|
p.
|
||
|
Notice that in addition to using the <code><child></code> element in the parent template, you also need to
|
||
|
add <code>ChildComponent</code> in <code>ParentComponent</code>'s list of directives.
|