Angular 2中的双向绑定与NgModel和突变绑定属性?

前端之家收集整理的这篇文章主要介绍了Angular 2中的双向绑定与NgModel和突变绑定属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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不能神奇地知道值何时发生变化,但我希望在评估事件后它会进行脏检查.有没有办法让它自动做这样的事情或以某种方式接受改变?我想避免使用申请.

更新

添加ngDefaultControl

<paper-input ngDefaultControl [(ng-model)]="address">

另见https://github.com/angular/angular/issues/5360

**

我想这是ngModel实现的当前限制.它绑定到元素的value字段,但对于textarea,它应该绑定到文本AFAIR字段.看起来textarea会触发一个ngModel监听的事件,使其在一个方向上工作.

您可以通过实现自定义ValueAccessor来解决此问题

也可以看看
ngModel custom ValuesAccessor
Angular 2 custom form input
Bind angular 2 model to polymer dropdown

原文链接:https://www.f2er.com/angularjs/143352.html

猜你在找的Angularjs相关文章