Angular 手动实现ngModal数据双向绑定

2020-08-23  本文已影响0人  阿秃

ngModel

Angular中我们在formsModule中使用ngModel实现数据的双向绑定

<input type="text" [(ngModel)]="name" /> 

这里的ngModel其实是个语法糖,它等价与属性绑定+事件绑定,就像下面这样

<input type="text" [ngModel]="name" (ngModelChange)="name = $event" />

也可以写成普通的属性绑定+普通事件

<input type="text" [value]="name" (input)="name = $event.target.value" />

手动实现

自己来实现一个双向绑定
父组件

<app-child [(name)]="name"> </app-child>
// ts
public name:string = "";

子组件html:

<input type="text" [value]="name" (input)="name = $event.target.value">

子组件ts

private _name:string = '';
  // 输出型属性:事件发射器 EventEmitter  从 angular/core中导入
@Output() nameChange = new EventEmitter();
@Input()
public get name():string{
  return this._name;
}
public set name(value:string){
  this._name = value;
  this.nameChange.emit(value)
}

这样就完成了, 对于父组件来说,就是实现了子组件的数据双向绑定!

上一篇下一篇

猜你喜欢

热点阅读