簡體   English   中英

帶有EventEmitter的Angular2樹復選框

[英]Angular2 tree checkbox with EventEmitter

我有樹視圖的問題,它有兒童復選框。 所以,問題是我從事件發射器獲取嵌套的東西。 請看截圖和代碼。

這是我的自定義組件,我有遞歸,我只想傳遞選定的子或父。

零件

import { Component, Input, EventEmitter, Output } from '@angular/core';

@Component ({
    selector: 'category-tree-view',
    template: `
    <ul class="tree">
        <li *ngFor="let category of treeData">
            <label class="control control--checkbox" *ngIf="hasCheckbox">
                <input type="checkbox" [checked]="category.checked" (change)="selectedCategory(category, $event)" />
                <div class="control__indicator"></div>
            </label>
            <span *ngIf="category.subcategories?.length" (click)="toggleChildren(category)" class="toggle">+</span>
            {{category.name}}
            <div class="tree-actions" *ngIf="hasActions">
                <button class="btn btn-link edit" (click)="editCategory(category)">
                  <i class="icon-admin-edit"></i>
                </button>
                <button class="btn btn-link delete" (click)="deleteCategory(category)">
                  <i class="icon-admin-close"></i>
                </button>
            </div>
            <category-tree-view [treeData]="category.subcategories" *ngIf="category.visible" (edit)="editCategory($event)" (delete)="deleteCategory($event)" [hasCheckbox]="hasCheckbox" (selected)="selectedCategory($event)" [hasActions]="hasActions"></category-tree-view>
        </li>
    </ul>
    `
})
export class ProductCategoryTreeView {
    @Input() treeData: any[];
    @Input() hasCheckbox: boolean = false;
    @Input() hasActions: boolean = false;
    @Output() edit = new EventEmitter();
    @Output() delete = new EventEmitter();
    @Output() selected = new EventEmitter();

    constructor() {}

    toggleChildren(node: any) {
        node.visible = !node.visible;
    }

    editCategory(category){
        this.edit.emit(category);
    }

    deleteCategory(category) {
        this.delete.emit(category);
    }

    selectedCategory(category, event) {
        this.selected.emit({category, event});
    }
}

這就是我在其他html頁面中所擁有的內容,它是不同的組件,在本例中為product-form.component.html

<category-tree-view [treeData]="categories" (edit)="editCategory($event)" (delete)="deleteCategory($event)" (selected)="selectCategory($event)" [hasCheckbox]="true"></category-tree-view>

而且我只在組件product-form.component.ts中有方法

selectCategory(cat, event) {
    console.log(cat, event);
}

這是我在控制日志數據時獲得的屏幕截圖。

來自console.log的數據

您能否嘗試使用以下代碼並檢查它是否有效?

selectedCategory(category, event) {
    this.selected.emit(event);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM