Metamask
在 Angular 應用程序中使用乙太監聽元遮罩事件
我正在建構一個 Angular 應用程序,它通過元遮罩連接到各種區塊鏈帳戶。我的一項服務通過使用獲取提供者和簽名者連接到 MetaMask
this.myProvider = new ethers.providers.Web3Provider(window.ethereum); this.mySigner = this.myProvider.getSigner();
我希望我的服務能夠知道使用者何時切換帳戶或鏈,或退出元遮罩,並且我正試圖找到一種方法來在這些事件發生時通知它們。
我看到返回
myProvider
的對像是一個 Web3Provider,它包含一個帶有addListener
2 個參數的方法,一個EventType
和一個Listener
,但我找不到任何關於如何訪問有效事件類型或如何設置偵聽器的文件我假設這些事件可能會提供我正在尋找的東西。有人可以指出如何使用這些事件和偵聽器的範例嗎?
這些事件是提供者 API 的EIP-1193定義的一部分,如果我理解正確,它們不是 ethers.js 或 web3.js 的一部分。這裡也有一個很好的文件。
因此,要訪問它們,您需要直接呼叫
window.ethereum
Metamask 注入的那個。window.ethereum.on("accountsChanged", (accounts) => { /* do what you want here */ })
類似地觀察鏈條變化:
window.ethereum.on("chainChanged", (chainId) => { /* do what you want here */ /* full refresh is recommended */ })