Master Angular Signals in 60 Seconds

Posted by


Angular signals are an important concept in Angular programming as they help to manage communication between different components in an Angular application. In this tutorial, we will learn how to use signals to create custom communication channels between components in Angular.

Step 1: Install the SignalR package
First, you need to install the SignalR package in your Angular application. You can do this by running the following command in the terminal:

npm install @aspnet/signalr

Step 2: Set up the SignalR service
Next, you need to create a SignalR service in your Angular application. This service will be responsible for managing the connection to the SignalR server and handling incoming and outgoing messages. Here is an example code for the SignalR service:

import { Injectable } from '@angular/core';
import * as signalR from '@aspnet/signalr';

@Injectable({
  providedIn: 'root'
})
export class SignalRService {
  private hubConnection: signalR.HubConnection

  constructor() {
    this.hubConnection = new signalR.HubConnectionBuilder()
      .withUrl('http://localhost:5000/chathub')
      .build();

    this.hubConnection.start()
      .then(() => console.log('SignalR connection started'))
      .catch(err => console.error('Error while starting SignalR connection: ' + err))
  }

  public sendMessage(message: string) {
    this.hubConnection.invoke('SendMessage', message)
      .catch(err => console.error('Error while sending message: ' + err));
  }

  public onMessageReceived(callback: (message: string) => void) {
    this.hubConnection.on('ReceiveMessage', callback);
  }
}

Step 3: Using the SignalR service in components
Now that you have set up the SignalR service, you can use it in your Angular components to send and receive messages. Here is an example code for using the SignalR service in a component:

import { Component, OnInit } from '@angular/core';
import { SignalRService } from './signalr.service';

@Component({
  selector: 'app-chat',
  templateUrl: './chat.component.html',
  styleUrls: ['./chat.component.css']
})
export class ChatComponent implements OnInit {
  public message: string;

  constructor(private signalRService: SignalRService) { }

  ngOnInit() {
    this.signalRService.onMessageReceived((message: string) => {
      console.log('Message received: ' + message);
    });
  }

  public sendMessage() {
    this.signalRService.sendMessage(this.message);
    this.message = '';
  }
}

In this example, the ChatComponent sends messages using the sendMessage method of the SignalR service and receives messages using the onMessageReceived method.

That’s it! You have now learned how to use Angular signals to create custom communication channels between components in Angular. Happy coding!

0 0 votes
Article Rating
30 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@AnnoyingNeighborPhilippines
2 months ago

Your sample is very good. Im perplexed many other content in stackoverflow and blogs are so misleading..yours is a gem

@abdul_js
2 months ago

на русском общайся да

@jessenielsen69
2 months ago

What would one use this for?

@xxRAP13Rxx
2 months ago

Thank you for the short! What cycle did you mention at the beginning? “… because it is working without (???) cycle”

@vignesh_m_1995
2 months ago

Similar to useState setState in react.

@dmitry9728
2 months ago

What editor do you use? Something in terminal?

@kumarKumar-qs8sy
2 months ago

What you explained is just similar to [(ngModel)]

@ThanHtutZaw3
2 months ago

How can I know I gained performance . with dev tools profiler ?

@vsaihruthikreddy7127
2 months ago

Nice one …content is good. By the way would you audition for a Russian villain role in a Hollywood movie because your voice suits that kind of a role 😅😅

@jayman1ism
2 months ago

???

@josephdique9997
2 months ago

Is signal the same with ngmodel?

@Awesomo4000
2 months ago

Digest cycle? Sir… this is an Angular (not AngularJS) project. Also, if you don't set the changeDetection to ChangeDetectionStrategy.OnPush, the change detection will still run.

@mxz2024
2 months ago

whats the key difference to behavioursubjects? you dont neee subscribe and can directly access it? so its not a stream/event based anymore?

@sapito169
2 months ago

this video is not compleate you forget the bear and the vodka

@waelltifi-2023
2 months ago

this video made me hate coding

@handler572
2 months ago

What the difference between signal and [(ngModel)] ?

@tocw86
2 months ago

Is that Signal or WritibleSignal ? Is signal immutable ?

@DanneManne88
2 months ago

It can be Done easier in vanilla JavaScriot 😛

@LovingLego
2 months ago

just like drinking tequila the first time,. can you make a video, about comparing code with signal vs. origin code,…

@jellyfish1772
2 months ago

Are you a russsian