2016-03-06 45 views
3

我下面this part of the tutorial爲AngularJS 2以下,但是當我嘗試從列表中選擇一個「英雄」的元素,我收到這樣的錯誤:的評估過程中角2錯誤「單擊」教程

EXCEPTION: Error during evaluation of "click" 
ORIGINAL EXCEPTION: TypeError: l_context.onSelect is not a function 

這與點擊模板的一部分結合:

<ul class="heroes"> 
    <li *ngFor="#hero of heroes" 
     [class.selected]="hero === selectedHero" 
     (click)="onSelect(hero)"> 
     <span class="badge">{{hero.id}}</span> {{hero.name}} 
    </li> 
</ul> 

,這是類AppComponent在那裏我定義ONSELECT功能:

export class AppComponent { 
    title = 'Tour of Heroes'; 
    heroes = HEROES; 
    selectedHero: Hero; 

    onSelect(hero: Hero) { this.selectedHero = hero; } 
} 

我甚至試圖複製代碼到底如何在教程中,但仍然收到錯誤。怎麼了?

+0

您必須確保該模板必須是AppComponent的一部分 –

+0

您確定打字稿文件已被正確重新編譯,並且您刷新了頁面以重新載入生成的JS文件嗎?如果app.js文件具有onSelect功能,請在開發工具「源代碼」選項卡中查找。 –

+0

如果您定義方法的返回類型,則可能會出現類似的錯誤,如'onSelect(hero:Hero):void {/*...*/}'。只是刪除返回類型,使其在這種情況下工作。 – Patrick

回答

3

您的代碼對我的作品在這裏很好的工作plunkr使用代碼:

http://plnkr.co/edit/vbinFbGtB7oRoW8cJHwb?p=preview

我認爲英雄是這樣的對象,

heroes = [{'id':1,'name':'pardeep'}, {'id':2,'name':'jain'}]; 

是由在評論@eric說確保您的HTML文件由AppComponent加載,其次確保您的打字稿文件正確編譯。

+0

好吧,我正在處理cloud9 ...我試圖重新啓動服務器,現在它工作正常。也許我正在處理的文件之前沒有正確保存。謝謝。 – user2861867