2016-06-07 4 views
1

Ich versuche, das Akkordeon oder Panel in Angular 2.0.0-beta.15 zu verwenden, aber als ich versuchte, es zum Laufen zu bringen, habe ich die folgende Meldung "Eigenschaft 'ngOnDestroy' fehlt in Typ ‚NgbAccordionGroup“Panel Akkordeon in Angular2

import {bootstrap} from '@angular/platform-browser-dynamic'; 
import {Component, OnDestroy} from '@angular/core'; 

@Component({ 
    selector: 'ngb-accordion,[ngb-accordion]', 
    inputs: ['onlyOneOpen: closeOthers'], 
    template: `<ng-content></ng-content>` 
}) 
export class NgbAccordion { 
    private onlyOneOpen: boolean; 
    private groups: Array<NgbAccordionGroup> = []; 

    addGroup(group: NgbAccordionGroup): void { this.groups.push(group); } 

    closeOthers(openGroup): void { 
    if (!this.onlyOneOpen) { 
     return; 
    } 

    this.groups.forEach((group: NgbAccordionGroup) => { 
     if (group !== openGroup) { 
     group.isOpen = false; 
     } 
    }); 
    } 

    removeGroup(group: NgbAccordionGroup): void { 
    const index = this.groups.indexOf(group); 
    if (index !== -1) { 
     this.groups.splice(index, 1); 
    } 
    } 
} 

@Component({ 
    selector: 'ngb-accordion-group,[ngb-accordion-group]', 
    inputs: ['heading', 'isOpen', 'isDisabled'], 
    template: ` 
    <div class="card"> 
     <div class="card-header"> 
     <a href tabindex="0"><span [class.text-muted]="isDisabled" (click)="toggleOpen($event)">{{heading}}</span></a> 
     </div> 
     <div class="card-block" [hidden]="!isOpen"> 
     <div class="card-text"> 
      <ng-content></ng-content> 
     </div> 
     </div> 
    </div> 
    ` 
}) 
export class NgbAccordionGroup implements OnDestroy { 
    private isDisabled: boolean; 
    private _isOpen: boolean = false; 

    constructor(private accordion: NgbAccordion) { this.accordion.addGroup(this); } 

    toggleOpen(event) { 
    event.preventDefault(); 
    if (!this.isDisabled) { 
     this.isOpen = !this.isOpen; 
    } 
    } 

    onDestroy(): void { this.accordion.removeGroup(this); } 

    public get isOpen(): boolean { return this._isOpen; } 

    public set isOpen(value: boolean) { 
    this._isOpen = value; 
    if (value) { 
     this.accordion.closeOthers(this); 
    } 
    } 
} 

@Component({ 
    selector: 'my-app', 
    templateUrl: './src/app.html' 
    directives: [NgbAccordion, NgbAccordionGroup] 
}) 
export class App { 
    firstDisabled:boolean = false; 
    isOpen:boolean = false; 

} 

bootstrap(App, []).catch(err => console.error(err)); 

Oder werfen sie einen Blick hier http://plnkr.co/edit/we3EsK?p=preview Gerade jetzt in der RC1 arbeiten, aber ich muss es zu Angular 2.0.0-beta.15

Irgendwelche Gedanken machen zurück?

Antwort

1
onDestroy(): void { this.accordion.removeGroup(this); } 

sollte

ngOnDestroy(): void { this.accordion.removeGroup(this); } 

Die Fehlermeldung, ohne tatsächlich der Umsetzung ihrer Mitglieder aus

... implements OnDestroy { 

kommt sein.