首页 > 解决方案 > Angular App 中的“smartContract.at 不是函数”

问题描述

在我的 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])"

标签: javascriptangularethereumweb3web3js

解决方案


如果您使用的是web3version 1.x.x,则合约实例的机制将更改如下所示:

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

如果不需要挖掘公共方法/变量,您可以调用它们,如下所示:

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

推荐阅读