[英]How to show/hide components using angular4?
我有2个组件,所以我具有扩展功能,如果用户单击一个组件,则应全屏显示,因此在这种情况下,我想隐藏其他组件,反之亦然。组件在其他组件上正在扩展和重叠。 如何使用angular2 +实现此目的?
search.component.html
<div class="card card-outline-info" [ngClass]="{'expandWidget':isClassExpanded}" (click)="onClickMe($event)" >
<span class="pull-right fa fa-compass" style="font-size:25px"></span>
<div class="card-header bg-info"><h5>Detail</h5></div>
<div class="card-block">
<p>TExt</p>
</div>
</div>
search.component.ts
@Output() open: EventEmitter<any> = new EventEmitter();
onClickMe(event) {
event.target.classList.add('expandWidget'); // To ADD
if(event.target.classList.contains('expandWidget')){
event.target.classList.remove('expandWidget');
}
this.isClassExpanded = ! this.isClassExpanded;
this.open.emit(true);
console.log('You are my hero!',event);
}
detail.component.html
<div class="card card-outline-info" [hidden]="hideContent>
<div class="card-header bg-info"><h5>Live Stream/Search Results</h5></div>
<div class="card-block">
<p>Text</p>
</div>
</div>
</div>
detail.component.ts
onClicked= (value:boolean) => {
alert("Outside of component "+value);
this.hiddenContent = value;
}
main.component.html
<div class="row">
<div class="col-sm-6">
<app-search></app-search>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<app-detail></app-detail>
</div>
</div>
鉴于我正确理解了您的问题,这是解决问题的一种方法:
https://stackblitz.com/edit/angular-playground-dguqkn?file=app%2Fdetail.component.ts
发生的情况是您搜索组件向父组件(app.component)发出了一个事件,该事件更改了detailHidden
的值,该值绑定到Input装饰器,在此示例中我们将其隐藏。 然后,在detail组件中,我们使用ngOnChanges生命周期挂钩监听更改。
您也可以只在app.component本身中进行*ngIf
切换。
希望这会引导您走上正确的道路
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.