Integrating Web3.js with Angular allows you to create decentralized applications (dApps) that interact with the Ethereum blockchain. This guide will walk you through the steps needed to set up your Angular application with Web3.js.

Step 1: Set Up Your Angular Project

Start by creating a new Angular project using the Angular CLI. Open your terminal and run the following command:

ng new my-dapp

Navigate into your project directory:

cd my-dapp

Start the development server:

ng serve

Step 2: Install Web3.js

Next, install the Web3.js library. In your project directory, run:

npm install web3

Step 3: Create a Web3 Service

It’s a good practice to create a service for Web3 functionality. Create a new service by running:

ng generate service web3

Open the newly created service file web3.service.ts and set up the Web3 instance:

import { Injectable } from '@angular/core';
import Web3 from 'web3';

@Injectable({
providedIn: 'root'
})
export class Web3Service {
private web3: Web3 | null = null;

constructor() {
this.init();
}

async init() {
if (window.ethereum) {
this.web3 = new Web3(window.ethereum);
await window.ethereum.request({ method: 'eth_requestAccounts' });
} else {
alert('Please install MetaMask!');
}
}

getWeb3() {
return this.web3;
}
}

Step 4: Using the Web3 Service in a Component

Now, you can use the Web3 service in your Angular component. Open app.component.ts and inject the Web3 service:

import { Component, OnInit } from '@angular/core';
import { Web3Service } from './web3.service';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
web3: any;

constructor(private web3Service: Web3Service) {}

async ngOnInit() {
this.web3 = this.web3Service.getWeb3();
if (this.web3) {
console.log('Web3 is connected!');
}
}
}

Step 5: Interacting with Smart Contracts

To interact with a smart contract, you need the contract's ABI (Application Binary Interface) and its deployed address. You can obtain these from your smart contract deployment process.

const contractABI = [ /* ABI goes here */ ];
const contractAddress = '0xYourContractAddress';

const contract = new this.web3.eth.Contract(contractABI, contractAddress);

You can now call functions on your smart contract. For example, to call a function named cd my-dapp0:

cd my-dapp1

Step 6: Sending Transactions

To send a transaction to your smart contract, use the following code:

cd my-dapp2

Conclusion

By following these steps, you can successfully integrate Web3.js with your Angular application. This setup enables you to build powerful decentralized applications that can interact with the Ethereum blockchain.