【发布时间】:2018-04-02 16:34:33
【问题描述】:
这是对how to show/hide dynamic id of div's in angular2提出的问题的引用。
我准备了一个 plunker 来显示我面临的问题?
在这里,我想在 4 个框中分别切换 btn1 和 btn2。
要求是当在box1中时,btn1被点击,'subRegion'应该显示&'productLine'应该隐藏;当 btn2 被点击时,'productLine' 应该显示并且'subRegion' 应该隐藏。同样,在box2、box3、box4之间。
在这里,从box1(4个框中的一个)中单击btn2正在显示每个框中的内容。如何解决?
这是plunker链接,https://plnkr.co/edit/E3ykbvXIPtQwVqe9cnQA?p=preview
代码:-
@Component({
selector: 'my-app',
template: `
<div class="col-xs-3 rmpm" *ngFor="let kpi of kpiName;let index=index;">
<div class="col-xs-12 rmpm" style="height:80px;border:1px solid;width:70px;padding:0px;margin:0px;">A</div>
<div class="col-xs-12 rmpm" style="border:1px solid;width:70px;margin-top:10px;padding:0px;margin:0px;">
<div class="col-xs-12 rmpm" style="border:1px solid;padding:0px;margin:0px;">
<!--btn 1 should be by default active and have blue color -->
<div class="col-xs-6 rmpm" id="btn1{{index}}" (click)="showsubid(index,'btn1')" style="padding:0px;margin:0px;border-right:1px solid;">btn1</div>
<div class="col-xs-6 rmpm" id="btn2{{index}}" (click)="showproid(index,'btn2')" style="padding:0px;margin:0px;">btn2</div>
</div>
<!--By default will be displayed when btn1 is active,this will show when btn1 is clicked and hide when btn2 is clicked -->
<div class="col-xs-12" id="subid{{index}}" style="padding:0px;margin:0px;" >
<div class="col-xs-12 rmpm filteredDataRow" *ngFor="let subDta of subRegion;let k = index;" style="padding:0px;margin:0px;">
<div class=" col-xs-12 rmpm filteredDataName " (click)='loadSubRegionData()' style="padding:0px;margin:0px;border-top:1px solid">{{subRegion[k]}}</div>
</div>
</div>
<!--this will show when btn2 is clicked and hide when btn1 is clicked -->
<div class="col-xs-12" id="proid{{index}}" style="padding:0px;margin:0px;" *ngIf="pro == 0" >
<div class="col-xs-12 rmpm filteredDataRow" *ngFor="let subDta of productLine;let k = index;" style="padding:0px;margin:0px;" >
<div class=" col-xs-12 rmpm filteredDataName " (click)='loadSubRegionData()' style="padding:0px;margin:0px;border-top:1px solid">{{productLine[k]}}</div>
</div>
</div>
</div>
</div>
`,
})
export class App {
kpiName = ['s', 'TO ','d','e'];
subRegion = ['Ch', 'Ia', 'Ja', 'Ke', 'SE'];
productLine = ['6A', '7T', '9T', 'UV', 'BA'];
pro: any;
constructor() {
}
showsubid(index,btnid){
alert(index)
alert(btnid+index)
}
showproid(index){
alert(index)
// alert(id+index)
this.pro = index;
}
}
【问题讨论】:
-
作为最佳实践,如果组件模板中的行数超过 5 行,请使用单独的 html 文件。这样一来,您的组件就会看起来更简洁、更易于理解。
标签: angular ngfor angular-ng-if