【发布时间】:2016-04-09 02:35:59
【问题描述】:
我正在尝试对 angular2 进行一些处理,但我无法找到有关此行为的信息。
我有一个应用程序,它实现了一个像这样的自定义组件:
import {Component,Input} from 'angular2/core'
@Component({
selector:'my-comp',
template:`<input type="text" style="text-align:center; [(ngModel)]="inputText"> <p>{{inputText}}</p>`
})
export class MyComp{
@Input() inputText : string;
}
我正在尝试对我的组件中的inputText 变量进行双向数据绑定,如下所示:
<my-comp [(inputText)]="testString"></my-comp>
其中testString 是在MyApp.ts 中定义的变量,其中包含一个字符串。当我的inputText 被用户修改时,我希望我的testString 变量被修改。
这是一个带有简单示例代码的 Plunker:https://plnkr.co/edit/zQiCQ3hxSSjCmhWJMJph?p=preview
有没有办法让这个工作变得简单?我是否必须在我的自定义组件和重载函数上实现 Angular2 类才能使其像 ngModel 一样工作?我是否必须创建一个EventEmitter 类型的inputTextChanged 变量,当它发生更改时发出我的数据并执行以下操作:
<my-comp [inputText]="testString" (inputTextChanged)="testString = $event;"></my-comp>
提前谢谢你。
【问题讨论】:
-
是的,您必须创建一个事件发射器“inputTextChanged”,并在组件内部触发该事件。然后 [(inputText)] 应该按预期工作。
-
请注意:Angular2 中没有双向数据绑定之类的东西,但您可以有类似的行为。 victorsavkin.com/post/110170125256/…
-
根据官方网站的Angular2 Cheat Sheet:"
设置双向数据绑定。相当于: "。所以我认为我们可以说Angular2中有双向数据绑定。 -
@jornare,我认为你/Savkin 和 David 都是正确的。我相信 Savkin 试图表明 Angualr 2 中没有代码来处理双向数据绑定。即,
[(something)]只是一个属性绑定和一个事件绑定的语法糖。所以 Angular 不会将[(something)]视为一个双向数据绑定,而是将其视为两个单向数据绑定。
标签: data-binding angular bidirectional