我正在使用Angular 2 beta 5.
这是我的观点:
<textarea [(ngModel)]="pendingMessage" (keydown.enter)="sendMessage()"></textarea>
这是我的组件:
@Component({ //... }) export class AppComponent { private _pendingMessage: string; public get pendingMessage() { return this._pendingMessage; } public set pendingMessage(value: string) { this._pendingMessage = value; } constructor() { this.pendingMessage = "initial stuff"; //this shows up in the text field initially } public sendMessage() { console.log(this.pendingMessage); //here,pending message is indeed whatever I typed in the text field this.pendingMessage = "blah"; //here I expected the textfield to now contain "blah",but it doesn't } }
这种双向绑定的整个概念似乎正常.当我在字段中键入一些文本并按Enter键时,我可以看到pendingMessage确实是我在字段中输入的内容.
但是,在我尝试将pendingMessage设置为“blah”的下面一行中,我还期望这更新文本字段以包含“blah”.为什么不是这样?这不是双向绑定的重点吗?
我知道Angular 2不能神奇地知道值何时发生变化,但我希望在评估事件后它会进行脏检查.有没有办法让它自动做这样的事情或以某种方式接受改变?我想避免使用申请.
更新
原文链接:https://www.f2er.com/angularjs/143352.html添加ngDefaultControl
<paper-input ngDefaultControl [(ng-model)]="address">
另见https://github.com/angular/angular/issues/5360
**
我想这是ngModel实现的当前限制.它绑定到元素的value字段,但对于textarea,它应该绑定到文本AFAIR字段.看起来textarea会触发一个ngModel监听的事件,使其在一个方向上工作.
也可以看看
– ngModel custom ValuesAccessor
– Angular 2 custom form input
– Bind angular 2 model to polymer dropdown