单击 Angular 时显示/隐藏 <ul>
Show / hide <ul> on click in Angular
我正在尝试在 HTML 上显示菜单。目前它显示所有子菜单选项。我想让它显示点击项目的选项。
下面是我的home.html
代码
<ul class="navbar-nav">
<li data-toggle="dropdown" class="nav-item" *ngFor="let page of list;let i = index" id="id{{page.link_id}}"><span (click)="showsubmenu(i)">{{page.link_name}}<i class="iconn" *ngIf="page.flg[0].SHOW_ICON=='YES'"><ion-icon name="md-arrow-dropdown"></ion-icon></i></span>
<ul *ngFor="let sublink of page.sublink; let j=index;"><li >{{sublink.SUBLINK_NAME}}</li></ul>
</li>
</ul>
默认会出现子菜单选项,见下图:
home.ts
代码如下:
export class HomePage {
list = [];submenu;
json_data = [
{"link_id":"38","link_name":"Contact","flg":[{"SHOW_ICON":"NO"}],"sublink":[]},
{"link_id":"37","link_name":"Offices","flg":[{"SHOW_ICON":"YES"}],"sublink":[{"SUBLINK_NAME":"test11","SUBLINK_OF":"37","SUBLINK_ID":"10005"}]},
{"link_id":"34","link_name":"Products","flg":[{"SHOW_ICON":"YES"}],"sublink":[{"SUBLINK_NAME":"Quick Patrol","SUBLINK_OF":"34","SUBLINK_ID":"10004"},{"SUBLINK_NAME":"Link2","SUBLINK_OF":"34","SUBLINK_ID":"10013"}]},
{"link_id":"33","link_name":"Home","flg":[{"SHOW_ICON":"NO"}],"sublink":[]}
];
constructor(public navCtrl: NavController) {
this.list = this.json_data;
}
showsubmenu(index){
this.submenu= this.list[index]["link_id"];
console.log(this.submenu);
this.submenu=this.list[index]["sublink"];
console.log(this.submenu.length);
}
}
引入一个新的 属性,它将保留打开的菜单索引。使用 ngIf
切换 show/hide 子菜单:
HTML:
//First li
<li (click)="show === i ? show =- 1: show = i" ....>
//second li
<li *ngIf="show === i">....
打字稿:
...
show = -1;
...
<ng-container *ngIf="page.flg[0]=='NO'?null:true"><ul *ngFor="let sublink of page.sublink; let j=index;"><li >{{sublink.SUBLINK_NAME}}</li></ul></ng-container>
在*.ts中可以添加
showsubmenu(index) {
this.list[index]['flg'][0] === 'NO'? 'YES' : 'NO';
}
如果将 'flg' 键保留为布尔值而不是字符串数组会更好。而不是 'showsubmenu()',您可以像这样处理 html 中的 flg 键值:
(click)="page.flg?null:true"
我正在尝试在 HTML 上显示菜单。目前它显示所有子菜单选项。我想让它显示点击项目的选项。
下面是我的home.html
代码
<ul class="navbar-nav">
<li data-toggle="dropdown" class="nav-item" *ngFor="let page of list;let i = index" id="id{{page.link_id}}"><span (click)="showsubmenu(i)">{{page.link_name}}<i class="iconn" *ngIf="page.flg[0].SHOW_ICON=='YES'"><ion-icon name="md-arrow-dropdown"></ion-icon></i></span>
<ul *ngFor="let sublink of page.sublink; let j=index;"><li >{{sublink.SUBLINK_NAME}}</li></ul>
</li>
</ul>
默认会出现子菜单选项,见下图:
home.ts
代码如下:
export class HomePage {
list = [];submenu;
json_data = [
{"link_id":"38","link_name":"Contact","flg":[{"SHOW_ICON":"NO"}],"sublink":[]},
{"link_id":"37","link_name":"Offices","flg":[{"SHOW_ICON":"YES"}],"sublink":[{"SUBLINK_NAME":"test11","SUBLINK_OF":"37","SUBLINK_ID":"10005"}]},
{"link_id":"34","link_name":"Products","flg":[{"SHOW_ICON":"YES"}],"sublink":[{"SUBLINK_NAME":"Quick Patrol","SUBLINK_OF":"34","SUBLINK_ID":"10004"},{"SUBLINK_NAME":"Link2","SUBLINK_OF":"34","SUBLINK_ID":"10013"}]},
{"link_id":"33","link_name":"Home","flg":[{"SHOW_ICON":"NO"}],"sublink":[]}
];
constructor(public navCtrl: NavController) {
this.list = this.json_data;
}
showsubmenu(index){
this.submenu= this.list[index]["link_id"];
console.log(this.submenu);
this.submenu=this.list[index]["sublink"];
console.log(this.submenu.length);
}
}
引入一个新的 属性,它将保留打开的菜单索引。使用 ngIf
切换 show/hide 子菜单:
HTML:
//First li
<li (click)="show === i ? show =- 1: show = i" ....>
//second li
<li *ngIf="show === i">....
打字稿:
...
show = -1;
...
<ng-container *ngIf="page.flg[0]=='NO'?null:true"><ul *ngFor="let sublink of page.sublink; let j=index;"><li >{{sublink.SUBLINK_NAME}}</li></ul></ng-container>
在*.ts中可以添加
showsubmenu(index) {
this.list[index]['flg'][0] === 'NO'? 'YES' : 'NO';
}
如果将 'flg' 键保留为布尔值而不是字符串数组会更好。而不是 'showsubmenu()',您可以像这样处理 html 中的 flg 键值:
(click)="page.flg?null:true"