考虑以下场景。我想使用三个NameInputComponent
,每个包装一个文本输入,来构造一个FullNamesComponent
:
- 两个
NameInputComponent
s,用于一对单独的名字 (firstName1
&firstName2
) - 一
NameInputComponent
、共享姓氏(sharedLastName
)
FullNamesComponent 应该公开两个全名:
fullName1 = firstName1 + ' ' + sharedLastName
fullName2 = firstName2 + ' ' + sharedLastName
将这些组件链接在一起的正确方法是什么?我尝试使用ngModel
,它允许我将输入的值绑定到 中的变量NameInputComponent
,但我不知道如何继续构建,以便我可以在父组件中对这些值做一些事情。据我了解,我需要使用 anEventEmitter
来使父母可以消耗价值,但我不知道该怎么做。
我应该注意这没有被用作要提交的表格。我希望绑定到输出并将它们用于页面的其他部分,以及能够以编程方式/通过绑定到页面的其他部分来更改输入的内容。
这是我到目前为止所拥有的:
名称-input.component.ts
import {Component} from 'angular2/core';
@Component({
selector: 'name-input',
template: `
<h2>{{inputValue}}</h2>
<input type="text" [(ngModel)]="inputValue">
`
})
export class NameInputComponent {
inputValue: string; // <= How do I detect changes to this?
}
全名.component.ts
import {Component} from 'angular2/core';
@Component({
selector: 'full-names',
template: `
{{fullName1}} & {{fullName2}}
<name-input #firstName1></name-input>
<name-input #firstName2></name-input>
<name-input #sharedLastName></name-input>
`,
directives: [
NameInputComponent
],
providers: [
NameInputComponent
]
})
export class FullNamesComponent {
fullName1: string; // No idea how to link these
fullName2: string; // to values in components above
}