在使用Antd的时候,一直很好奇里面的双向绑定的自定义组件是怎么作的。html
由于以前一直用,没有去细看文档。segmentfault
今天抽空来简单的撸一下。app
在ng中,()是单向数据流,从视图目标到数据源,[()]这样就是双向绑定了。简单的说就是ng给的一个语法糖,帮咱们作了子组件内部事件发射的事件监听,而后赋值。less
子组件:htmlthis
<input placeholder="test" type="text" [(ngModel)]="qc" #qq (ngModelChange)="testevent()">
子组件:tsspa
@Component({ selector: 'app-qingcheng', templateUrl: './qingcheng.component.html', styleUrls: ['./qingcheng.component.less'] }) export class QingchengComponent implements OnInit { @Input() username: string; @Output() usernameChange = new EventEmitter(); constructor() { } ngOnInit() { } testevent() { console.log(this.username); this.usernameChange.emit(this.username); } }
向外部发射事件的时候,必定要xxxChange,以Change结尾的事件才正确,否则没法双向绑定。。双向绑定
这个坑找了半天才解决:http://www.javashuo.com/article/p-dllxmkdi-cz.htmlcode
父组件:htmlcomponent
<app-qingcheng #qingcheng [(qc)]="testbind"></app-qingcheng> {{testbind}}
父组件:tshtm
@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.less'] }) export class AppComponent { title = 'qctest'; testbind = ''; }