angular4自定义双向绑定

本文介绍如何使用自定义组件实现双向绑定,通过示例详细解释了数据传递的过程及注意事项。

最近在工作中遇到了自定义组件,实现双向绑定,之前也有这样的需求,不过都被我这样那样的用较麻烦的方法避开了,不过这次还是老老实实地用双向绑定吧。

自定义组件

 1 @Component({
 2   selector: 'search-common',
 3   template: `
 4     <div class="input-group">
 5       <input class="form-control input-sm" type="text" [formControl]="searcher"/>
 6       <span class="input-group-btn">
 7         <button class="btn btn-sm btn-primary btn-outline" type="button"
 8                 (click)="searchCom(searcher.value)">搜索</button>
 9       </span>
10     </div>
11   `
12 })

实现数据的传递

  @Output() search = new EventEmitter<string>();

  @Output() valueChange = new EventEmitter<string>();
  @Input()
  set value(value) {
    this.searcher.patchValue(value);
  }

在数据发生变化的时候,实时传递数据

  searchCom(value) {
    if (value !== this._value) {
      this._value = value;
      this.search.emit(value);
      this.valueChange.emit(value);
    }
  }

使用该组件时

<search-common placeholder="搜索" (searchCom)="search($event)" [(value)] = "value"></search-common>

默认的命名方法为在变量名后加上Change以作区分。比较大的坑就是当时在@Input的时候set 方法没有写,导致数据获取不到,小伙伴们,不要在同一个地方跌倒哟

 

转载于:https://www.cnblogs.com/Vibge/p/9250196.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值