Angular 2中具有NgModel和突变绑定属性的双向绑定?
我使用的是Angular 2 beta 5 以下是我的看法:Angular 2中具有NgModel和突变绑定属性的双向绑定?,angular,Angular,我使用的是Angular 2 beta 5 以下是我的看法: <textarea [(ngModel)]="pendingMessage" (keydown.enter)="sendMessage()"></textarea> 这种双向绑定的整个概念似乎工作正常。当我在字段中键入一些文本并按enter键时,我可以看到pendingMessage确实是我在字段中键入的内容 然而,在下面的一行中,我试图将pendingMessage设置为“blah”,我也希望这会将文本字段
<textarea [(ngModel)]="pendingMessage" (keydown.enter)="sendMessage()"></textarea>
这种双向绑定的整个概念似乎工作正常。当我在字段中键入一些文本并按enter键时,我可以看到pendingMessage
确实是我在字段中键入的内容
然而,在下面的一行中,我试图将pendingMessage
设置为“blah”
,我也希望这会将文本字段更新为包含“blah”。为什么不是这样?这不是双向绑定的要点吗
我知道Angular 2无法神奇地知道值何时变化,但我希望它在评估事件后能做一次脏检查。有没有办法让它自动做这样的事情,或者以某种方式接受变化?我希望避免使用
apply
更新
添加ngDefaultControl
<paper-input ngDefaultControl [(ng-model)]="address">
另见
**
我想这是当前ngModel
实现的一个限制。它绑定到元素的value
字段,但对于textarea
而言,它是它应该绑定到的text
AFAIR字段。textarea
似乎触发了一个事件,该事件是ngModel
监听的,使其朝一个方向工作
您可以通过实现自定义ValueAccessor
另见-
-
-对于绑定文本区域值,您可以使用更改功能: 模板
对不起,我误解了你的问题:-(没关系-我给了你一个反对票来纠正我之前给你的反对票(我看你没有误解事情的记录)。实际上,textarea似乎受到支持,并且它有一个
值
属性。所有这些看起来都很好,但仍然不起作用。我创建了一个,无法复制。好的,Plunker在工作的地方使用beta.0。我更新到beta.3,它停止了工作。似乎是最近引入的错误。原因是(keydown.enter)
您的建议是什么?我是否要等待它被修复?这似乎是由缩小的脚本版本引起的。开发版本可以工作。好吧,这是一个已知的问题。
<paper-input ngDefaultControl [(ng-model)]="address">
<textarea id="some-value" (change)="doTextareaValueChange($event)">{{textareaValue}}</textarea>
export class AppComponent implements OnInit {
private textareaValue = '';
doTextareaValueChange(ev) {
try {
this.textareaValue = ev.target.value;
} catch(e) {
console.info('could not set textarea-value');
}
}
}