"smartContract.at не является функцией" в Angular приложении - PullRequest
1 голос
/ 28 февраля 2020

В моем Angular Dapp, в первом коде ошибка "smartContract.at не является функцией".

  settingMap(hashRoot : string) {
 var smartContract = new window.web3.eth.Contract([contractAbi])
 var contract = smartContract.at(contractAddress)
 var owner = smartContract.owner
 console.log(owner)

Но если я напишу код таким образом:

 settingMap(hashRoot : string) {
var smartContract = new window.web3.eth.Contract([contractAbi],contractAddress)
var owner = smartContract.owner
console.log(owner)

печать console.log не определена. Как я могу решить эту проблему? Я пытался разными способами, даже изменив строку кода

"var smartContract = window.web3.eth.contract([contractAbi])"

в

 "var smartContract = new window.web3.eth.Contract([contractAbi])"

1 Ответ

1 голос
/ 02 марта 2020

Если вы используете web3 версию 1.x.x, то механизм для экземпляра контракта изменяется, как показано ниже:

var smartContract = new web3.eth.Contract(contractAbi, contractAddress);

И вы можете вызывать publi c методы / переменные, если они не требует добычи, как показано ниже:

await smartContract.methods.owner().call();
...