在使用angular时,我们都知道输入框可以通过[(ngModel)]实现数据双向绑定,不可避免更多的会使用到组件之间互相传值,通常通过方括号[]和圆括号()实现组件之间的传值,只是以单向传值的方式会变得尤为繁琐,那么组件之间是不是也可实现像[(ngModel)]一样双向绑定互相传值的方式?
举个栗子~
实现通过点击父组件按钮显示子组件dialog,点击dialog确定按钮,关闭隐藏dialog。
1 // app测试数据ponent.html 2 < h1 > 我是父组件 </ h1 > 3 < button (click) ="clickBtn()" > 点击我触发child组件 </ button > 4 < child [(isShow)] ="isShow" ></ child >
   1   //   app测试数据ponent.ts 
  2  import { Component, OnInit } from '@angular/core' ;
   3   @Component({
   4    selector: 'app' ,
   5    templateUrl: './app测试数据ponent.html' ,
   6    styleUrls: ['./app测试数据ponent.css' ]
   7   })
   8   export class AppComponent implements OnInit {
   9     isShow:  boolean  =  false  ; 
  1 
 11      ngOnInit(){} 
 13      clickBtn() {
  14         this .isShow =  true  ;  // 初始化isShow值为true传给子组件
  15      }
  16  
 17  } 
此时子组件接收到父组件传过来的isShow的值:
1 // child测试数据ponent.html 2 < div class ="dialog_box" *ngIf ="isShow" > 3 < h1 > 我是子组件,是否将我关闭? </ h1 > 4 < p >< span (click) ="submit()" > 确定 </ span ></ p > 5 </ div >
   1  import { Component, OnInit,   EventEmitter   } from '@angular/core' ;
   2  
  3   @Component({
   4    selector: 'child' ,
   5    templateUrl: './child测试数据ponent.html' ,
   6    styleUrls: ['./child测试数据ponent.css' ]
   7   })
   8  
  9   export class ChildComponent {
  10        @Input() isShow: Boolean;
  11       @Output() isShow  Change   =  new   EventEmitter();
  12   14        submit(){
  15           this .isShow =  false  ;
           this.isShowChange.emit(this.isShow);
  16        }
  17  } 
以上,就实现了组件之间双向绑定,同时 需要注意的地方 ,输出属性必须在输入属性的基础上加上“change”后缀,这里是不可以随便命名的,比如输入属性的变量名为data,那么传回给父组件接收的输出属性必须为 dataChange 。
?
查看更多关于Angular自定义组件之间的双向绑定的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did222850