![](/img/trans.png)
[英]How to connect Metamask wallet address to web3 on bsc testnet on React
[英]How to connect with wallet MetaMask in angular uing web3?
我正在angular
中實現代碼以在單擊按鈕時連接加密錢包,我還安裝了web3
,但我不知道如何刪除錯誤並使用代碼 init。
connectWallet(){
let web3;
let ethereum = window.ethereum;
if (typeof window.web3 !== 'undefined') {
web3 = new Web3(window.web3.currentProvider);
} else {
web3 = new Web3.providers.HttpProvider(localprovide);
}
// ethereum = new Web3(window.ethereum);
ethereum.enable().then(async (accounts) => {
// console.log('transfer called.........', accounts[0]);
localStorage.setItem('account', accounts[0]);
});
if (window.web3) {
// Subscription register
ethereum.on('accountsChanged', async (accounts) => {
// Reload to avoid MetaMask bug: "MetaMask - RPC Error: Internal JSON-RPC"
window.location.reload();
});
window.ethereum.on('networkChanged', async (network) => {
window.location.reload();
});
}
}
在應用程序組件 OnInit 中:
declare const web3: any;
declare const Web3: any;
public ngOnInit() {
if (typeof web3 !== 'undefined') {
// Use Mist/MetaMask's provider
this.web3Service.web3Instance = new Web3(web3.currentProvider);
this.web3Service.initContractInstance();
} else {
// Handle the case where the user doesn't have web3. Probably
// show them a message telling them to install Metamask in
// order to use our app.
}
}
Web3服務:
@Injectable()
export class Web3Service {
private contractAddress = "your Contract Address";
public contractInstance: any;
public web3Instance: any;
public initContractInstance() {
this.contractInstance = new this.web3Instance.eth.Contract(ABI, this.contractAddress);
}
public getAccounts(): Promise<any> {
return this.web3Instance.eth.getAccounts()
}
public signUp(account: string): Promise<any> {
return this.contractInstance.methods.signUp()
.send({ from: account, value: this.web3Instance.utils.toWei(PRICES.signUp, 'ether') })
}
}
在要調用一些需要帳戶的方法的組件中:
export class WelcomeComponent implements OnInit {
constructor(private web3Service: Web3Service) {
}
ngOnInit(): void {
}
public connectWallet() {
if (!ethEnabled()) {
console.log("Need to download Wallet")
} else {
from(this.web3Service.getAccounts())
.subscribe(accounts => {
this.web3Service.signUp(accounts[0])
.then(result => {
console.log(result)
})
})
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.