组件css
import { Component, Input } from '@angular/core'; @Component({ selector: 'app-tree', templateUrl: './tree.component.html', styleUrls: ['./tree.component.scss'] }) export class TreeComponent { // 超简单, 重点: 接收上级的值 // 能够为树创建一个接口, 这里简化为any @Input() treelists: any // 点击动做 itemClick(i) { // 创建一个服务来接收这个值, 或者借助双向绑定, 处理动做 i._open = i._open // 本例只简单演示开关, 借助 treelists自己实现 console.log(i) } }
模板内容html
<ul> <li *ngFor="let item of treelists"> <button md-button (click)="itemClick(item)">{{item.title}}</button> <!--调用组件自己并 传值给下级: [treelists]="item.items"--> <app-tree *ngIf="item._open && item.items && item.items.length" [treelists]="item.items"></app-tree> </li> </ul>
以上树组件完成, 在其余组件中调用此组件便可app
<app-tree [treelists]="menu"></app-tree>
数据/赋值双向绑定
menu = [{ title: '1', _open:true, //默认打开第一级 items: [{ title: '1.1', items: [ { name: '1.1.1', title: 'xxx', items: [] } ] }, { title: '1.2', items:[] } ] }]