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

Mat*_*zen 7 angular

我正在使用Angular 2 beta 5.

这是我的观点:

<textarea [(ngModel)]="pendingMessage" (keydown.enter)="sendMessage()"></textarea>
Run Code Online (Sandbox Code Playgroud)

这是我的组件:

@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
    }
}
Run Code Online (Sandbox Code Playgroud)

这种双向绑定的整个概念似乎正常.当我在字段中输入一些文本然后按回车键时,我可以看到这pendingMessage确实是我在字段中输入的内容.

然而,在下面,我尝试设置行pendingMessage"blah",我也期待这个更新文本字段包含"嗒嗒".为什么不是这样?这不是双向绑定的重点吗?

我知道Angular 2不能神奇地知道值何时发生变化,但我希望在评估事件后它会进行脏检查.有没有办法让它自动做这样的事情或以某种方式接受改变?我想避免使用apply.

Gün*_*uer 5

更新

ngDefaultControl

<paper-input ngDefaultControl [(ng-model)]="address">
Run Code Online (Sandbox Code Playgroud)

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

**

我想这是实施的当前限制ngModel.它绑定到value元素的字段,但是它应该绑定到textarea它的textAFAIR字段.似乎textarea火灾是一个ngModel倾听的事件,使它在一个方向上发挥作用.

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

另请参阅
- ngModel自定义ValuesAccessor
- Angular 2自定义表单输入
- 将角度2模型绑定到聚合物下拉列表