[英]How can i output this json in the specific output using ngFor in Angular 8
I have this json code how can i output HTML using *ngFor in angular 8. I have shown the HTML Structure too below. I have this json code how can i output HTML using *ngFor in angular 8. I have shown the HTML Structure too below. Help me to how can i use ngFor for generating like the html below.帮助我了解如何使用 ngFor 进行生成,例如下面的 html。 if menu array item has array of submenu then it must loop that array first.. suggest me..如果菜单数组项具有子菜单数组,那么它必须首先循环该数组..建议我..
{ "menu" : [ { "item":"Home", "link":"/home" }, { "item":"About Us", "link":"/aboutus" }, { "item":"Services", "link":"#", "submenu":[ {"item":"Service One", "link":"/one" }, {"item":"Service Two", "link":"/two" }, {"item":"Service Three", "link":"/three" }, {"item":"Service Four", "link":"/four" }, {"item":"Service Five", "link":"/five" }, {"item":"Service Six", "link":"/six" } ] }, { "item":"Portfolio", "link":"/portfolio" }, { "item":"Blog", "link":"/blog" }, { "item":"Contact Us", "link":"/contactus" } ] }
html structure html结构
<div class="menustrip">
<div class="container">
<div class="row">
<div class="col-md-12">
<span class="hamburger text-right p-2 mt-2"><i class="fa fa-bars"></i></span>
<ul class="menu nav">
<li class="nav-item"><a routerLink="home" class="nav-link">Home</a></li>
<li class="nav-item"><a routerLink="aboutus" class="nav-link">About Us</a></li>
<li class="nav-item has-childrens"><a ng-href="#" class="nav-link">Services <i class="fa fa-angle-down"></i></a>
<div class="gl-dropdown">
<ul class="megamenu">
<li class="megamenu-item"><a routerLink="/one" class="nav-link">Service One</a></li>
<li class="megamenu-item"><a routerLink="/two" class="nav-link">Service Two</a></li>
<li class="megamenu-item"><a routerLink="/three" class="nav-link">Service Three</a></li>
<li class="megamenu-item"><a routerLink="/four" class="nav-link">Service Four</a></li>
<li class="megamenu-item"><a routerLink="/five" class="nav-link">Service Five</a></li>
<li class="megamenu-item"><a routerLink="/six" class="nav-link">Service Six</a></li>
</ul>
</div>
</li>
<li class="nav-item"><a routerLink="/portfolio" class="nav-link">Portfolio</a></li>
<li class="nav-item"><a href="/blog" class="nav-link">Blog</a></li>
<li class="nav-item"><a routerLink="/contactus" class="nav-link">Contact Us</a></li>
</ul>
</div>
</div>
</div>
</div>
i have tried this我试过这个
<div class="menustrip">
<div class="container">
<div class="row">
<div class="col-md-12">
<span class="hamburger text-right p-2 mt-2"><i class="fa fa-bars"></i></span>
<ul class="menu nav">
<li class="nav-item" *ngFor="let item of menuStr.menu">
<a *ngIf="item.submenu == undefined" [routerLink]=item.link class="nav-link">{{item.item}}</a>
<a *ngIf="item.submenu !== undefined" routerLink="#" class="nav-link">{{item.item}} <i class="fa fa-angle-down"></i></a>
<div class="gl-dropdown">
<ul class="megamenu">
<li class="nav-item" *ngFor="let subitem of item.submenu">
<a [routerLink]=subitem.link class="nav-link">{{subitem.item}}</a>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
I have tried above.. is there any way from which i can add the class has-childrens to li in case it has submenu..我在上面尝试过..有什么方法可以将 class has-childrens 添加到 li 以防它有子菜单..
Just Make a component which will handle this只需制作一个可以处理此问题的组件
like喜欢
nested-component.ts嵌套组件.ts
@Component({
selector: 'app-nested-component',
templateUrl: './nested-component.html',
styleUrls: ['./nested-component.scss']
})
export class NestedComponent implements OnInit {
@Input() data:any;
@Input() child: false;
constructor() {}
ngOnInit() {}
}
nested-component.html嵌套组件.html
<li class="child ? 'megamenu-item' : data.submenu.length ? 'nav-item has-childrens' : 'nav-item'">
<a [routerLink] = "data.link" class="nav-link">{{data.item}}</a>
<ng-container *ngIf="data.submenu?.length">
<div class="gl-dropdown">
<ul class="megamenu">
<ng-container *ngFor="let child of data.submenu">
<app-nested-component [data]="child" [child]=true></app-nested-component>
</ng-container>
</ul>
</div>
</ng-container>
</li>
And then in your main html file然后在你的主 html 文件中
<ng-container *ngFor="let item of menuStr.menu>
<app-nested-component [data]="item" [child]=false></app-nested-component>
</ng-container>
Working Example https://stackblitz.com/edit/angular-c3qzst工作示例https://stackblitz.com/edit/angular-c3qzst
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.