2017-06-23 117 views
1

我有一個簡單的Plunkr應用程序,它在點擊一個按鈕時添加了兩個數字。Angular:ReferenceError:'function'is not defined

我得到ReferenceError: addNumber is not defined其中add number是由'onClick'處理函數調用的函數。

onClick(num1, num2){ 
    addNumber(num1, num2).then((result) => this.result = result)); 
} 

addNumber(x, y){ 
    return new Promise((resolve) => { 
      x = parseInt(x); 
      y = parseInt(y); 
      setTimeout(() => resolve(x+y), 2000) 
     }) 
     } 
    } 

但是,如果我的function關鍵字添加到addNumber它的工作原理,但據我所知,有打字稿它是可選的使用function關鍵字。

爲什麼單擊按鈕時未定義addNumber?

回答

0

當訪問類成員必須使用this引用它們:

this.addNumber(num1, num2).then((result) => this.result = result)); 

當你function關鍵字添加到addNumber你正在它是一個本地函數而不是類成員,因此無需參考this即可訪問。

+0

有什麼區別? – Sajeetharan

+0

沒有看到你的。 Mine解釋了爲什麼在工作之前添加'function'。 – Saravana

+0

我選擇了這一個作爲答案,因爲儘管解決方案與@ Sajeetharan's相同,但您可以解釋問題所在 – user9030

2

使用this對現有班級自主功能

onClick(num1, num2) { 
    this.addNumber(num1, num2).then((result) => this.result = result)); 
}