父子组件通@Input

来源:6-2 输入属性

慕田峪2064799

2017-06-14

我希望在父组件上有个按钮 当我点击按钮是 显示子组件  然后点击子组件 子组件隐藏  然后再次点击父组件上的按钮依然会显示子组件,

我在父组件是上定义了一个 变量 然后通过button 的click事件设置变量为block  然后通过Input 传给子组件 在子组件中使用ngOnchanges钩子改变子组件的display样式   结果是第一次是ok的然后第二次点击就没反应了  我也试过在DoCheck钩子中改变子组件样式都没成功

父组件主要代码如下

//ts文件

  isshow:string;

  show1(){

    this.isshow = "block";

  }


//html文件

<app-child [test1]="isshow"></app-child>


子组件中

//ts文件

 @Input() test1:string;

  ngOnChanges(changes) {

    console.log(JSON.stringify(changes,null,2));

    document.getElementById("tp").style.display = this.test1;

  }


  showw(){

    this.test1 = "none";

    document.getElementById("tp").style.display = this.test1; 

  }

//html文件

<p id="tp" (click)="showw()">

  child works! 

</p>


请问下 使用input 可以实现吗?

写回答

1回答

慕田峪2064799

提问者

2017-06-14

解决了 使用 @ViewChild  引用子组件的方法 搞定了

0
0

Angular4.0从入门到实战 打造股票管理网站

Angular新特性,教你熟练使用 Angular 和 Typescript 开发组件式单页应用

2683 学习 · 1361 问题

查看课程