2017-05-24 6 views
-1

Versuch, einen Funktionsaufruf mit Klick während ngFor auszugeben. Ich bin mir nicht sicher, wie ich darauf verweisen soll.Angular2 onclick in ngfor

Ich bin neu zu Angualr2, und ich bin mir nicht sicher, ob dies der richtige Weg ist, dies zu erreichen. Ich würde mich über jede Beratung freuen.

export class Navbar { 

    constructor() {} 

    public userNavs = [ 
     { title: 'Account', click: 'account()' }, 
     { title: 'Logout', click: 'logout()' } 
    ] 

    logout() { 
     console.log('working'); 
    } 

    account(){ 
     console.log('working'); 
    } 

    ngOnInit() {} 
} 

////HTML//// 

<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="userdropdown">    
    <li *ngFor="let nav of userNavs" ><a class="dropdown-item btn-sm" (click)="{{ nav.click }}" >{{ nav.title }}</a></li> 
</ul> 
+0

Es ist wirklich unklar aus Ihrer Beschreibung und den Code, was Sie zu erreichen versuchen, es sieht aus wie ein Chaos. –

+1

Verwenden Sie keine Interpolation innerhalb der Ausgabeeigenschaft '(klicken Sie auf' ' – yurzui

Antwort

1

, die ein besserer Weg:

export class Navbar { 

    constructor() {} 

    public userNavs = [ 
     { title: 'Account', click: 'account()' }, 
     { title: 'Logout', click: 'logout()' } 
    ] 

    eventClick(userNav){ 
     if('Account') this.account(); 
     else this.logout(); 
    } 

    logout() { 
     console.log('working logout'); 
    } 

    account(){ 
     console.log('working account'); 
    } 

    ngOnInit() {} 
} 

////HTML//// 

<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="userdropdown">    
    <li *ngFor="let nav of userNavs" ><a class="dropdown-item btn-sm" (click)="eventClick(nav)" >{{ nav.title }}</a></li> 
</ul> 
+0

Super, das sieht viel besser aus! Vielen Dank – user1019416