Skip to main content

Command Palette

Search for a command to run...

Angular Components

Updated
21 min read

I made 40 components for this exercise using HTML and TYPESCRIPT, along with 10 components. These variously oriented parts will aid in your comprehension of the systems' logic. For a reviewer to familiarize themselves with the principles, I have included them.

50 Components with different functions

  1. Component name: displayhelloworld
    Display the text "Hello World" on the screen using a variable from the TypeScript file.
import { Component } from '@angular/core';

@Component({
  selector: 'app-displayhelloworld',
  templateUrl: './displayhelloworld.component.html',
  styleUrl: './displayhelloworld.component.css'
})
export class DisplayhelloworldComponent {
  message: string = 'Hello World!';
}
<p>{{message}}</p>
  1. component name: showhellobutton
    Create a button, and when the user clicks the button, "Hello World" is displayed on the screen.
import { Component } from '@angular/core';

@Component({
  selector: 'app-showhellobutton',
  templateUrl: './showhellobutton.component.html',
  styleUrl: './showhellobutton.component.css'
})
export class ShowhellobuttonComponent {

}
<p>Hello World!</p>
  1. component name: displayname
    User inputs their name, and when the button is clicked, their name is displayed on the screen.
import { Component } from '@angular/core';

@Component({
  selector: 'app-displayname',
  templateUrl: './displayname.component.html',
  styleUrl: './displayname.component.css'
})
export class DisplaynameComponent {
  name: string = '';
  result: string = '';

  show() : void {
    this.result = this.name;
  }
}
<input type="text" placeholder="Input your name" [(ngModel)]="name">
<button type="button" (click)="show()">Submit</button>
<br>
<p>{{result}}</p>
  1. component name: counter
    Create a counter that increases by 1 when the user clicks a button.
import { Component } from '@angular/core';

@Component({
  selector: 'app-counter',
  templateUrl: './counter.component.html',
  styleUrl: './counter.component.css'
})
export class CounterComponent {
  count: number = 0;

  increment(): void {
    this.count++;
  }
}
<div class="counter-container">
    <h2>Counter: {{ count }}</h2>
    <button (click)="increment()">Increase</button>
  </div>
  1. component name: simpleform
    Create a form with text inputs and a submit button, display the submitted input data.
import { Component } from '@angular/core';

@Component({
  selector: 'app-simpleform',
  templateUrl: './simpleform.component.html',
  styleUrl: './simpleform.component.css'
})
export class SimpleformComponent {
  submittedData: { name: string, email: string } | null = null;

  onSubmit(): void {
    const form = document.querySelector('form') as HTMLFormElement;
    const formData = new FormData(form);

    this.submittedData = {
      name: formData.get('name') as string,
      email: formData.get('email') as string,
    };
  }
}
`<div class="form-container">
    <form (ngSubmit)="onSubmit()" #simpleForm="ngForm">
      <label for="name">Name:</label>
      <input type="text" id="name" name="name" ngModel required>

      <label for="email">Email:</label>
      <input type="email" id="email" name="email" ngModel required>

      <button type="submit" [disabled]="!simpleForm.form.valid">Submit</button>
    </form>

    <div *ngIf="submittedData">
      <h3>Submitted Data:</h3>
      <p><strong>Name:</strong> {{submittedData.name}}</p>
      <p><strong>Email:</strong> {{submittedData.email}}</p>
    </div>
  </div>
  1. component name: userage
    Input user’s birth year, and when the button is clicked, display their age.
import { Component } from '@angular/core';

@Component({
  selector: 'app-userage',
  templateUrl: './userage.component.html',
  styleUrl: './userage.component.css'
})
export class UserageComponent {
  birthYear: number | null = null;
  age: number | null = null;

  calculateAge() {
    if (this.birthYear) {
      const currentYear = new Date().getFullYear();
      this.age = currentYear - this.birthYear;
    }
  }
}
<div>
    <h2>Age Calculator</h2>
    <input type="number" [(ngModel)]="birthYear" placeholder="Enter your birth year">
    <button (click)="calculateAge()">Calculate Age</button>
    <p *ngIf="age !== null">Your age is: {{ age }}</p>
  </div>
  1. component name: usergreeting
    User inputs their name, and when clicked, display a personalized greeting.
import { Component } from '@angular/core';

@Component({
  selector: 'app-usergreeting',
  templateUrl: './usergreeting.component.html',
  styleUrls: ['./usergreeting.component.css'] // Use 'styleUrls' for an array
})
export class UsergreetingComponent {  
  name: string = '';
  greeting: string = '';

  generateGreeting(): void {
    if (this.name.trim()) {
      this.greeting = `Hello, ${this.name}! Welcome to my project about Angular Components.`;
    } else {
      this.greeting = 'Please enter your name.';
    }
  }
}
<div>
  <h2>Enter Your Name:</h2>
  <input type="text" [(ngModel)]="name" placeholder="Enter your name">
  <button (click)="generateGreeting()">Greet Me</button>

  <p *ngIf="greeting">{{ greeting }}</p>
</div>
  1. component name: calculator
    Create a simple calculator with add, subtract, multiply, and divide functionalities.
import { Component } from '@angular/core';

@Component({
  selector: 'app-calculator',
  templateUrl: './calculator.component.html',
  styleUrl: './calculator.component.css'
})
export class CalculatorComponent {
  num1: number | null = null;
  num2: number | null = null;
  operation: string = 'add';
  result: number | null = null;

  calculate(): void {
    if (this.num1 !== null && this.num2 !== null) {
      switch (this.operation) {
        case 'add':
          this.result = this.num1 + this.num2;
          break;
        case 'subtract':
          this.result = this.num1 - this.num2;
          break;
        case 'multiply':
          this.result = this.num1 * this.num2;
          break;
        case 'divide':
          this.result = this.num1 / this.num2;
          break;
        default:
          this.result = null;
          break;
      }
    }
  }
}
<div class="calculator-container">
    <form (ngSubmit)="calculate()">
      <label for="num1">Enter first number:</label>
      <input type="number" id="num1" [(ngModel)]="num1" name="num1" required>

      <label for="num2">Enter second number:</label>
      <input type="number" id="num2" [(ngModel)]="num2" name="num2" required>

      <label for="operation">Operation:</label>
      <select [(ngModel)]="operation" name="operation" required>
        <option value="add">Add</option>
        <option value="subtract">Subtract</option>
        <option value="multiply">Multiply</option>
        <option value="divide">Divide</option>
      </select>

      <button type="submit">Calculate</button>
    </form>

    <div *ngIf="result !== null">
      <h3>Result: {{ result }}</h3>
    </div>
  </div>
  1. component name: textlength

    Input a string, and when the button is clicked, display the length of the string.

import { Component } from '@angular/core';

@Component({
  selector: 'app-textlength',
  templateUrl: './textlength.component.html',
  styleUrl: './textlength.component.css'
})
export class TextlengthComponent {
  inputText: string = '';
  textLength: number | null = null;

  calculateLength(): void {
    this.textLength = this.inputText.length;
  }
}
<div class="textlength-container">
    <form (ngSubmit)="calculateLength()">
      <label for="text">Enter a string:</label>
      <input type="text" id="text" [(ngModel)]="inputText" name="text" required>

      <button type="submit">Get Length</button>
    </form>

    <div *ngIf="textLength !== null">
      <h3>Length: {{ textLength }}</h3>
    </div>
  </div>
  1. component name: currencyconverter

    Input a value in one currency, convert it to another currency on button click (1 dollar = 56 Php).

import { Component } from '@angular/core';

@Component({
  selector: 'app-currencyconverter',
  templateUrl: './currencyconverter.component.html',
  styleUrl: './currencyconverter.component.css'
})
export class CurrencyconverterComponent {
  usdValue: number | null = null;
  phpValue: number | null = null;
  conversionRate: number = 56;  // 1 USD = 56 PHP

  convertCurrency(): void {
    if (this.usdValue !== null) {
      this.phpValue = this.usdValue * this.conversionRate;
    }
  }
}
<div class="currencyconverter-container">
    <form (ngSubmit)="convertCurrency()">
      <label for="usd">Enter value in USD:</label>
      <input type="number" id="usd" [(ngModel)]="usdValue" name="usdValue" required>

      <button type="submit">Convert to PHP</button>
    </form>

    <div *ngIf="phpValue !== null">
      <h3>PHP Value: {{ phpValue }}</h3>
    </div>
  </div>
  1. component name: evenoddchecker

    Input a number and check if it is even or odd.

import { Component } from '@angular/core';

@Component({
  selector: 'app-evenoddchecker',
  templateUrl: './evenoddchecker.component.html',
  styleUrl: './evenoddchecker.component.css'
})
export class EvenoddcheckerComponent {
  numberInput: number | null = null;
  result: string = '';

  checkEvenOdd(): void {
    if (this.numberInput !== null) {
      this.result = this.numberInput % 2 === 0 ? 'Even' : 'Odd';
    }
  }
}
<div>
    <h3>Even or Odd Checker</h3>
    <input type="number" [(ngModel)]="numberInput" placeholder="Enter a number">
    <button (click)="checkEvenOdd()">Check</button>
    <p *ngIf="result">{{ result }}</p>
  </div>
  1. component name: wordreverser

    Input a word, and when the button is clicked, display the word reversed.

import { Component } from '@angular/core';

@Component({
  selector: 'app-wordreverser',
  templateUrl: './wordreverser.component.html',
  styleUrls: ['./wordreverser.component.css']
})
export class WordreverserComponent {
  inputWord: string = '';
  reversedWord: string | null = null;

  reverseWord(): void {
    this.reversedWord = this.inputWord.split('').reverse().join('');
  }
}
<div>
    <h3>Word Reverser</h3>
    <input type="text" id="inputWord" [(ngModel)]="inputWord" placeholder="Enter a word">
    <button (click)="reverseWord()">Reverse</button>
    <p *ngIf="reversedWord">Reversed Word: {{ reversedWord }}</p>
  </div>
  1. component name: showdate

    Create a button that shows the current date and time when clicked.

import { Component } from '@angular/core';

@Component({
  selector: 'app-showdate',
  templateUrl: './showdate.component.html',
  styleUrl: './showdate.component.css'
})
export class ShowdateComponent {
  currentDate: string | null = null;

  showDate(): void {
    const now = new Date();
    this.currentDate = now.toLocaleString();
  }
}
<div>
    <h3>Show Current Date and Time</h3>
    <button (click)="showDate()">Show Date</button>
    <p *ngIf="currentDate">Current Date and Time: {{ currentDate }}</p>
  </div>
  1. component name: showusername

    User inputs their username, and on clicking a button, their username is displayed on the screen.

import { Component } from '@angular/core';

@Component({
  selector: 'app-showusername',
  templateUrl: './showusername.component.html',
  styleUrl: './showusername.component.css'
})
export class ShowusernameComponent {
  username: string = '';
  displayedUsername: string | null = null;

  showUsername(): void {
    this.displayedUsername = this.username;
  }
}
<div>
    <h3>Show Username</h3>
    <input type="text" [(ngModel)]="username" placeholder="Enter your username">
    <button (click)="showUsername()">Show Username</button>
    <p *ngIf="displayedUsername">Hello, {{ displayedUsername }}!</p>
  </div>
  1. component name: multiplicationtable

    Input a number and generate its multiplication table.

import { Component } from '@angular/core';

@Component({
  selector: 'app-multiplicationtable',
  templateUrl: './multiplicationtable.component.html',
  styleUrl: './multiplicationtable.component.css'
})
export class MultiplicationtableComponent {
  numberInput: number | null = null;
  table: number[] = [];

  generateTable(): void {
    if (this.numberInput !== null) {
      this.table = Array.from({ length: 10 }, (_, i) => this.numberInput! * (i + 1));
    }
  }
}
<div>
    <h3>Multiplication Table</h3>
    <input type="number" [(ngModel)]="numberInput" placeholder="Enter a number">
    <button (click)="generateTable()">Generate Table</button>

    <ul *ngIf="table.length > 0">
      <li *ngFor="let result of table; let i = index">{{ numberInput }} x {{ i + 1 }} = {{ result }}</li>
    </ul>
  </div>
  1. component name: simplelogin

    Create a simple login form with email and password fields.

import { Component } from '@angular/core';

@Component({
  selector: 'app-simplelogin',
  templateUrl: './simplelogin.component.html',
  styleUrl: './simplelogin.component.css'
})
export class SimpleloginComponent {
  email: string = '';
  password: string = '';
  loginMessage: string | null = null;

  login(): void {
    this.loginMessage = `Logged in as: ${this.email}`;
  }
}
<div>
    <h3>Simple Login</h3>
    <input type="email" [(ngModel)]="email" placeholder="Enter email">
    <input type="password" [(ngModel)]="password" placeholder="Enter password">
    <button (click)="login()">Login</button>
    <p *ngIf="loginMessage">{{ loginMessage }}</p>
  </div>
  1. component name: fahrenheittocelsius

    Convert temperature from Fahrenheit to Celsius when the user inputs a value.

import { Component } from '@angular/core';

@Component({
  selector: 'app-fahrenheittocelsius',
  templateUrl: './fahrenheittocelsius.component.html',
  styleUrl: './fahrenheittocelsius.component.css'
})
export class FahrenheittocelsiusComponent {
  fahrenheit: number | null = null;
  celsius: number | null = null;

  convert(): void {
    if (this.fahrenheit !== null) {
      this.celsius = (this.fahrenheit - 32) * 5 / 9;
    }
  }
}
<div>
    <h3>Fahrenheit to Celsius Converter</h3>
    <input type="number" [(ngModel)]="fahrenheit" placeholder="Enter Fahrenheit">
    <button (click)="convert()">Convert</button>
    <p *ngIf="celsius !== null">Temperature in Celsius: {{ celsius.toFixed(2) }}°C</p>
  </div>
  1. component name: bookmarklist

    Allow users to input URLs and display them using anchor tags.

import { Component } from '@angular/core';

@Component({
  selector: 'app-bookmarklist',
  templateUrl: './bookmarklist.component.html',
  styleUrl: './bookmarklist.component.css'
})
export class BookmarklistComponent {
  url: string = '';
  bookmarks: string[] = [];

  addBookmark(): void {
    if (this.url) {
      this.bookmarks.push(this.url);
      this.url = '';
    }
  }
}
<div>
    <h3>Bookmark List</h3>
    <input type="text" [(ngModel)]="url" placeholder="Enter URL">
    <button (click)="addBookmark()">Add Bookmark</button>

    <ul>
      <li *ngFor="let bookmark of bookmarks">
        <a [href]="bookmark" target="_blank">{{ bookmark }}</a>
      </li>
    </ul>
  </div>
  1. component name: charactercounter

    Input a string and count the number of characters in it.

import { Component } from '@angular/core';

@Component({
  selector: 'app-charactercounter',
  templateUrl: './charactercounter.component.html',
  styleUrl: './charactercounter.component.css'
})
export class CharactercounterComponent {
  inputText: string = '';
  characterCount: number = 0;

  countCharacters(): void {
    this.characterCount = this.inputText.length;
  }
}
<div>
    <h3>Character Counter</h3>
    <input type="text" [(ngModel)]="inputText" (input)="countCharacters()" placeholder="Enter text">
    <p>Character Count: {{ characterCount }}</p>
  </div>
  1. component name: palindromechecker

    Input a word and check if it's a palindrome.

import { Component } from '@angular/core';

@Component({
  selector: 'app-palindromechecker',
  templateUrl: './palindromechecker.component.html',
  styleUrl: './palindromechecker.component.css'
})
export class PalindromecheckerComponent {
  inputWord: string = '';
  result: string | null = null;

  checkPalindrome(): void {
    const reversedWord = this.inputWord.split('').reverse().join('');
    this.result = this.inputWord === reversedWord ? 'It is a palindrome!' : 'It is not a palindrome.';
  }
}
<div>
    <h3>Palindrome Checker</h3>
    <input type="text" [(ngModel)]="inputWord" placeholder="Enter a word">
    <button (click)="checkPalindrome()">Check</button>
    <p *ngIf="result">{{ result }}</p>
  </div>
  1. component name: temperatureconverter

    Convert temperature from Celsius to Fahrenheit and vice versa.

import { Component } from '@angular/core';

@Component({
  selector: 'app-temperatureconverter',
  templateUrl: './temperatureconverter.component.html',
  styleUrl: './temperatureconverter.component.css'
})
export class TemperatureconverterComponent {
  celsius: number | null = null;
  fahrenheit: number | null = null;

  convertToFahrenheit(): void {
    if (this.celsius !== null) {
      this.fahrenheit = (this.celsius * 9 / 5) + 32;
    }
  }

  convertToCelsius(): void {
    if (this.fahrenheit !== null) {
      this.celsius = (this.fahrenheit - 32) * 5 / 9;
    }
  }
}
<div>
    <h3>Temperature Converter</h3>
    <div>
      <input type="number" [(ngModel)]="celsius" placeholder="Celsius">
      <button (click)="convertToFahrenheit()">Convert to Fahrenheit</button>
      <p *ngIf="fahrenheit !== null">{{ celsius }}°C = {{ fahrenheit.toFixed(2) }}°F</p>
    </div>

    <div>
      <input type="number" [(ngModel)]="fahrenheit" placeholder="Fahrenheit">
      <button (click)="convertToCelsius()">Convert to Celsius</button>
      <p *ngIf="celsius !== null">{{ fahrenheit }}°F = {{ celsius.toFixed(2) }}°C</p>
    </div>
  </div>
  1. component name: shoppinglist

    Create a shopping list where users can add and remove items (use list data structure).

import { Component } from '@angular/core';

@Component({
  selector: 'app-shoppinglist',
  templateUrl: './shoppinglist.component.html',
  styleUrl: './shoppinglist.component.css'
})
export class ShoppinglistComponent {
  item: string = '';
  shoppingList: string[] = [];

  addItem(): void {
    if (this.item) {
      this.shoppingList.push(this.item);
      this.item = '';
    }
  }

  removeItem(index: number): void {
    this.shoppingList.splice(index, 1);
  }
}
<div>
    <h3>Shopping List</h3>
    <input type="text" [(ngModel)]="item" placeholder="Add an item">
    <button (click)="addItem()">Add</button>

    <ul>
      <li *ngFor="let listItem of shoppingList; let i = index">
        {{ listItem }} <button (click)="removeItem(i)">Remove</button>
      </li>
    </ul>
  </div>
  1. component name: factorialcalculator

    Input a number and calculate its factorial when a button is clicked.

import { Component } from '@angular/core';

@Component({
  selector: 'app-factorialcalculator',
  templateUrl: './factorialcalculator.component.html',
  styleUrl: './factorialcalculator.component.css'
})
export class FactorialcalculatorComponent {
  numberInput: number | null = null;
  result: number | null = null;

  calculateFactorial(): void {
    if (this.numberInput !== null && this.numberInput >= 0) {
      this.result = this.factorial(this.numberInput);
    }
  }

  factorial(n: number): number {
    if (n === 0 || n === 1) {
      return 1;
    }
    return n * this.factorial(n - 1);
  }
}
<div>
    <h3>Factorial Calculator</h3>
    <input type="number" [(ngModel)]="numberInput" placeholder="Enter a number">
    <button (click)="calculateFactorial()">Calculate</button>
    <p *ngIf="result !== null">Factorial of {{ numberInput }} = {{ result }}</p>
  </div>
  1. component name: todomanager

    Create a simple to-do list where users can add and remove tasks (use list data structure).

import { Component } from '@angular/core';

@Component({
  selector: 'app-todomanager',
  templateUrl: './todomanager.component.html',
  styleUrl: './todomanager.component.css'
})
export class TodomanagerComponent {
  task: string = '';
  todoList: string[] = [];

  addTask(): void {
    if (this.task) {
      this.todoList.push(this.task);
      this.task = '';
    }
  }

  removeTask(index: number): void {
    this.todoList.splice(index, 1);
  }
}
<div>
    <h3>Todo Manager</h3>
    <input type="text" [(ngModel)]="task" placeholder="Add a task">
    <button (click)="addTask()">Add Task</button>

    <ul>
      <li *ngFor="let taskItem of todoList; let i = index">
        {{ taskItem }} <button (click)="removeTask(i)">Remove</button>
      </li>
    </ul>
  </div>
  1. component name: guessnumbergame

    Create a number guessing game where the user inputs guesses.

import { Component } from '@angular/core';

@Component({
  selector: 'app-guessnumbergame',
  templateUrl: './guessnumbergame.component.html',
  styleUrl: './guessnumbergame.component.css'
})
export class GuessnumbergameComponent {
  randomNumber: number = Math.floor(Math.random() * 100) + 1;
  guess: number | null = null;
  message: string | null = null;

  checkGuess(): void {
    if (this.guess !== null) {
      if (this.guess > this.randomNumber) {
        this.message = 'Too high!';
      } else if (this.guess < this.randomNumber) {
        this.message = 'Too low!';
      } else {
        this.message = 'Correct! You guessed the number!';
      }
    }
  }

  resetGame(): void {
    this.randomNumber = Math.floor(Math.random() * 100) + 1;
    this.guess = null;
    this.message = null;
  }
}
<div>
    <h3>Guess the Number Game</h3>
    <input type="number" [(ngModel)]="guess" placeholder="Enter your guess">
    <button (click)="checkGuess()">Check Guess</button>
    <p *ngIf="message">{{ message }}</p>
    <button (click)="resetGame()">Reset Game</button>
  </div>
  1. component name: wordcounter

    Input a string and count the number of words in it.

import { Component } from '@angular/core';

@Component({
  selector: 'app-wordcounter',
  templateUrl: './wordcounter.component.html',
  styleUrl: './wordcounter.component.css'
})
export class WordcounterComponent {
  inputText: string = '';
  wordCount: number = 0;

  countWords() {
    if (this.inputText.trim().length > 0) {
      this.wordCount = this.inputText.trim().split(/\s+/).length;
    } else {
      this.wordCount = 0;
    }
  }
}
<div>
    <h2>Word Counter</h2>
    <textarea [(ngModel)]="inputText" rows="4" placeholder="Enter your text here"></textarea>
    <button (click)="countWords()">Count Words</button>
    <p>Word count: {{ wordCount }}</p>
  </div>
  1. component name: randomnumbergenerator

    Generate and display a random number between a specified range when a button is clicked.

import { Component } from '@angular/core';

@Component({
  selector: 'app-randomnumbergenerator',
  templateUrl: './randomnumbergenerator.component.html',
  styleUrl: './randomnumbergenerator.component.css'
})
export class RandomnumbergeneratorComponent {
  min: number = 0;
  max: number = 100;
  randomNumber: number | null = null;

  generateRandomNumber() {
    this.randomNumber = Math.floor(Math.random() * (this.max - this.min + 1)) + this.min;
  }
}
<div>
    <h2>Random Number Generator</h2>
    <input type="number" [(ngModel)]="min" placeholder="Min">
    <input type="number" [(ngModel)]="max" placeholder="Max">
    <button (click)="generateRandomNumber()">Generate Random Number</button>
    <p>Random number: {{ randomNumber }}</p>
  </div>
  1. component name: multiplicationchecker

    Check if a number is a multiple of another number.

import { Component } from '@angular/core';

@Component({
  selector: 'app-multiplicationchecker',
  templateUrl: './multiplicationchecker.component.html',
  styleUrl: './multiplicationchecker.component.css'
})
export class MultiplicationcheckerComponent {
  number1: number = 0;
  number2: number = 0;
  resultMessage: string = '';

  checkMultiplication(): void {
    if (this.number2 !== 0 && this.number1 % this.number2 === 0) {
      this.resultMessage = `${this.number1} is a multiple of ${this.number2}.`;
    } else {
      this.resultMessage = `${this.number1} is not a multiple of ${this.number2}.`;
    }
  }
}
<div class="multiplication-checker">
    <h2>Multiplication Checker</h2>

    <div>
      <label for="number1">Enter a number:</label>
      <input type="number" [(ngModel)]="number1" id="number1">
    </div>

    <div>
      <label for="number2">Enter another number:</label>
      <input type="number" [(ngModel)]="number2" id="number2">
    </div>

    <button (click)="checkMultiplication()">Check Multiplication</button>

    <p>{{ resultMessage }}</p>
  </div>
  1. component name: uppercaseconverter

    Input a string and convert it to uppercase when the button is clicked.

import { Component } from '@angular/core';

@Component({
  selector: 'app-uppercaseconverter',
  templateUrl: './uppercaseconverter.component.html',
  styleUrl: './uppercaseconverter.component.css'
})
export class UppercaseconverterComponent {
  inputText: string = '';
  convertedText: string = '';

  convertToUppercase() {
    this.convertedText = this.inputText.toUpperCase();
  }
}
<div>
    <h2>Uppercase Converter</h2>
    <input type="text" [(ngModel)]="inputText" placeholder="Enter text">
    <button (click)="convertToUppercase()">Convert to Uppercase</button>
    <p>Uppercase text: {{ convertedText }}</p>
  </div>
  1. component name: wordshuffler

    Input a word and shuffle its letters randomly.

import { Component } from '@angular/core';

@Component({
  selector: 'app-wordshuffler',
  templateUrl: './wordshuffler.component.html',
  styleUrl: './wordshuffler.component.css'
})
export class WordshufflerComponent {
  inputText: string = '';
  shuffledText: string = '';

  shuffleWord() {
    this.shuffledText = this.inputText.split('').sort(() => 0.5 - Math.random()).join('');
  }
}
<div>
    <h2>Word Shuffler</h2>
    <input type="text" [(ngModel)]="inputText" placeholder="Enter word">
    <button (click)="shuffleWord()">Shuffle Word</button>
    <p>Shuffled word: {{ shuffledText }}</p>
  </div>
  1. component name: bmisolver

    Input height and weight, calculate and display the BMI.

import { Component } from '@angular/core';

@Component({
    selector: 'app-bmisolver',
    templateUrl: './bmisolver.component.html',
    styleUrl: './bmisolver.component.css'
})
export class BmisolverComponent {
    height: number | null = null;
    weight: number | null = null;
    bmi: number | null = null;
    category: string = '';

    calculateBMI(): void {
        if (this.height && this.weight) {
            this.bmi = this.weight / (this.height = this.height);
            this.setBMICategory();
        } else {
            this.bmi = null;
            this.category = '';
        }
    }

    setBMICategory(): void {
        if (this.bmi) {
            if(this.bmi < 18.5) {
                this.category = 'Underweight';
            } else if (this.bmi >= 18.5 && this.bmi < 24.9) {
                this.category = 'Normal weight';
            } else if (this.bmi >= 25 && this.bmi < 29.9) {
                this.category = 'Overweight';
            } else {
                this.category = 'Obese';
            }
        }
    }
}
<div class="bmi-solver">
    <h2>BMI Calculator</h2>

    <label for="height">Height (cm):</label>
    <input type="number" [(ngModel)]="height" id="height">

    <label for="weight">Weight (kg):</label>
    <input type="number" [(ngModel)]="weight" id="weight">

    <button (click)="calculateBMI()">Calculate BMI</button>

    <p *ngIf="bmi">Your BMI is: {{ bmi.toFixed(2) }}</p>
    <p *ngIf="!bmi && (height <= 0 || weight <= 0)">Please enter valid values for height and weight.</p>
  </div>
  1. component name: usernamevalidator

    Input a username and check its validity based on predefined rules (Create a variable).

import { Component } from '@angular/core';

@Component({
  selector: 'app-usernamevalidator',
  templateUrl: './usernamevalidator.component.html',
  styleUrl: './usernamevalidator.component.css'
})
export class UsernamevalidatorComponent {
  username: string = '';
  isValid: boolean | null = null;

  validateUsername(): void {
    const minLength = 5;
    const hasNumber = /\d/;
    this.isValid = this.username.length >= minLength && hasNumber.test(this.username);
  }
}
<div class="username-validator">
    <h2>Username Validator</h2>

    <label for="username">Enter a username:</label>
    <input type="text" [(ngModel)]="username" id="username">

    <button (click)="validateUsername()">Validate Username</button>

    <p *ngIf="isValid === true">Valid Username</p>
    <p *ngIf="isValid === false">Invalid Username: Must be at least 5 characters long and contain a number.</p>
  </div>
  1. component name: interestcalculator

    Input principal, rate, and time, and calculate simple interest.

import { Component } from '@angular/core';

@Component({
  selector: 'app-interestcalculator',
  templateUrl: './interestcalculator.component.html',
  styleUrl: './interestcalculator.component.css'
})
export class InterestcalculatorComponent {
  principal: number = 0;
  rate: number = 0;
  time: number = 0;
  interest: number | null = null;

  calculateInterest(): void {
    this.interest = (this.principal * this.rate * this.time) / 100;
  }
}
<div class="interest-calculator">
    <h2>Simple Interest Calculator</h2>

    <label for="principal">Principal:</label>
    <input type="number" [(ngModel)]="principal" id="principal">

    <label for="rate">Rate (%):</label>
    <input type="number" [(ngModel)]="rate" id="rate">

    <label for="time">Time (years):</label>
    <input type="number" [(ngModel)]="time" id="time">

    <button (click)="calculateInterest()">Calculate Interest</button>

    <p *ngIf="interest">Simple Interest: {{ interest | currency }}</p>
  </div>
  1. component name: compoundinterestcalculator

    Calculate compound interest when principal, rate, time, and frequency are input.

import { Component } from '@angular/core'

@Component ({
    selector: 'app-compoundinterestcalculator',
    templateUrl: './compoundinterestcalculator.component.html',
    styleUrl: './compoundinterestcalculator.component.css'
})
export class CompoundinterestcalculatorComponent {
    principal: number | null = null;
    rate: number | null = null;
    time: number | null = null;
    frequency: number | null = null;
    compoundingInterest: number | null = null;

    calculateCompoundingInterest(): void {
        if (this.principal !== null && this.rate !== null && this.rate !== null && this.time !== null && this.frequency !==null) {
            const r = this.rate / 100;
            const n = this.frequency;
            const t = this.time;

            const amount = this.principal * Math.pow((1 + r / n), n * t);
            this.compoundingInterest = amount - this.principal
        } else {
            this.compoundingInterest = null;
        }
    }
}
<div>
    <label for="principatInput">Principal (Amount): </label>
    <input type="number" id="principatInput" [(ngModel)]="Principal" placeholder="Enter Principal amount">

    <label for="rateInput">Rate of Interest (%): </label>
    <input type="number" id="rateInput" [(ngModel)]="rate" placeholder="Enter interest rate">

    <label for="timeInput">Time (Years): </label>
    <input type="number" id="timeInput" [(ngModel)]="time" placeholder="Enter time period in years">

    <label for="frequencyInput"> Compounding frequency (e.g., 12 for monthly, 4 for quarterly, 1 for yearly): </label>
    <input type="number" id="frequencyInput" [(ngModel)]="frequency" placeholder="Enter compounding frequency">

    <button (click)="calculateCompoudingInterest()"> Calculate Compound Interest</button>

</div>

<div *ngIf="compoundingInterest !== null">
    <p>Compound Interest: {{ compoundInterest | currency }}</p>
</div>
  1. component name: fibonaccigenerator

    Generate and display the first N Fibonacci numbers when a button is clicked.

import { Component } from '@angular/core';

@Component({
  selector: 'app-fibonaccigenerator',
  templateUrl: './fibonaccigenerator.component.html',
  styleUrl: './fibonaccigenerator.component.css'
})
export class FibonaccigeneratorComponent {
  count: number = 0;
  fibonacciSequence: number[] = [];

  generateFibonacci(): void {
    this.fibonacciSequence = [];
    let a = 0, b = 1;
    for (let i = 0; i < this.count; i++) {
      this.fibonacciSequence.push(a);
      [a, b] = [b, a + b];
    }
  }
}
<div class="fibonacci-generator">
    <h2>Fibonacci Sequence Generator</h2>

    <label for="count">Enter number of terms:</label>
    <input type="number" [(ngModel)]="count" id="count">

    <button (click)="generateFibonacci()">Generate Fibonacci Sequence</button>

    <p *ngIf="fibonacciSequence.length">Fibonacci Sequence: {{ fibonacciSequence.join(', ') }}</p>
  </div>
  1. component name: oddsumcalculator

    Input a number, and calculate the sum of odd numbers up to that number.

import { Component } from '@angular/core';

@Component({
  selector: 'app-oddsumcalculator',
  templateUrl: './oddsumcalculator.component.html',
  styleUrl: './oddsumcalculator.component.css'
})
export class OddsumcalculatorComponent {
  number = 0;
  oddSum = 0;

  calculateOddSum() {
    this.oddSum = 0;
    for (let i = 1; i <= this.number; i++) {
      if (i % 2 !== 0) {
        this.oddSum += i;
      }
    }
  }
}
<div>
    <label for="number">Enter a number:</label>
    <input type="number" [(ngModel)]="number" id="number" />

    <button (click)="calculateOddSum()">Calculate Odd Sum</button>

    <p>Sum of odd numbers: {{ oddSum }}</p>
  </div>
  1. component name: currencyformatter

    Input a number and format it as currency when a button is clicked (Dollar, Php, Euro - search euro conversion).

import { Component } from '@angular/core';

@Component({
  selector: 'app-currencyformatter',
  templateUrl: './currencyformatter.component.html',
  styleUrl: './currencyformatter.component.css'
})
export class CurrencyformatterComponent {
  amount = 0;
  formattedCurrency = '';

  formatCurrency(currencyType: string) {
    switch (currencyType) {
      case 'USD':
        this.formattedCurrency = `$${this.amount.toFixed(2)}`;
        break;
      case 'PHP':
        this.formattedCurrency = `₱${this.amount.toFixed(2)}`;
        break;
      case 'EUR':
        this.formattedCurrency = `€${this.amount.toFixed(2)}`;
        break;
    }
  }
}
<div>
    <label for="amount">Enter amount:</label>
    <input type="number" [(ngModel)]="amount" id="amount" />

    <button (click)="formatCurrency('USD')">Format as USD</button>
    <button (click)="formatCurrency('PHP')">Format as PHP</button>
    <button (click)="formatCurrency('EUR')">Format as EUR</button>

    <p>Formatted amount: {{ formattedCurrency }}</p>
  </div>
  1. component name: randomquotedisplay

    Display a random quote when a button is clicked (use list data structures).

import { Component } from '@angular/core';

@Component({
  selector: 'app-randomquotedisplay',
  templateUrl: './randomquotedisplay.component.html',
  styleUrl: './randomquotedisplay.component.css'
})
export class RandomquotedisplayComponent {
  quotes: string[] = [
    'The best way to predict the future is to create it.',
    'Life is what happens when you’re busy making other plans.',
    'The purpose of our lives is to be happy.',
    'Success is not final, failure is not fatal: It is the courage to continue that counts.'
  ];
  displayedQuote = '';

  displayRandomQuote() {
    const randomIndex = Math.floor(Math.random() * this.quotes.length);
    this.displayedQuote = this.quotes[randomIndex];
  }
}
<div>
    <button (click)="displayRandomQuote()">Show Random Quote</button>

    <p>{{ displayedQuote }}</p>
  </div>
  1. component name: uppercasegreeting

    User inputs their name, and when the button is clicked, display the name in uppercase.

import { Component } from '@angular/core';

@Component({
  selector: 'app-uppercasegreeting',
  templateUrl: './uppercasegreeting.component.html',
  styleUrl: './uppercasegreeting.component.css'
})
export class UppercasegreetingComponent {
  name = '';
  uppercaseName = '';

  convertToUppercase() {
    this.uppercaseName = this.name.toUpperCase();
  }
}
<div>
    <label for="name">Enter your name:</label>
    <input type="text" [(ngModel)]="name" id="name" />

    <button (click)="convertToUppercase()">Convert to Uppercase</button>

    <p>Your name in uppercase: {{ uppercaseName }}</p>
  </div>
  1. component name: divisiblechecker

    Input two numbers, and check if the first is divisible by the second.

import { Component } from '@angular/core';

@Component({
  selector: 'app-divisiblechecker',
  templateUrl: './divisiblechecker.component.html',
  styleUrl: './divisiblechecker.component.css'
})
export class DivisiblecheckerComponent {
  num1 = 0;
  num2 = 1;
  isDivisible = false;

  checkDivisibility() {
    this.isDivisible = this.num1 % this.num2 === 0;
  }
}
<div>
    <label for="num1">Enter first number:</label>
    <input type="number" [(ngModel)]="num1" id="num1" />

    <label for="num2">Enter second number:</label>
    <input type="number" [(ngModel)]="num2" id="num2" />

    <button (click)="checkDivisibility()">Check Divisibility</button>

    <p *ngIf="isDivisible">Yes, {{ num1 }} is divisible by {{ num2 }}.</p>
    <p *ngIf="!isDivisible">No, {{ num1 }} is not divisible by {{ num2 }}.</p>
  </div>
  1. component name: emailvalidator
import { Component } from '@angular/core';

@Component({
  selector: 'app-emailvalidator',
  templateUrl: './emailvalidator.component.html',
  styleUrls: ['./emailvalidator.component.css']
})
export class EmailValidatorComponent {
  email: string = '';
  isValid: boolean | null = null;

  validateEmail() {
    const regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/g;
    this.isValid = regex.test(this.email);
  }
}
<div>
<input type="email" [(ngModel)]="email" placeholder="Enter email"/>
<button (click)="validateEmail()">Validate Email</button>
<p *ngIf="isValid !== null">{{ isValid ? 'Valid' : 'Invalid' }} email</p>
</div>
  1. component name: areacalculator
import { Component } from '@angular/core';

@Component({
  selector: 'app-areacalculator',
  templateUrl: './areacalculator.component.html',
  styleUrls: ['./areacalculator.component.css']
})
export class AreaCalculatorComponent {
  length: number = 0;
  width: number = 0;
  area: number | null = null;

  calculateArea() {
    this.area = this.length * this.width;
  }
}
<div>
<input type="number" [(ngModel)]="length" placeholder="Enter length"/>
<input type="number" [(ngModel)]="width" placeholder="Enter width"/>
<button (click)="calculateArea()">Calculate Area</button>
<p *ngIf="area !== null">Area: {{ area }} sq. units</p>
</div>
  1. component name: lengthconverter
import { Component } from '@angular/core';

@Component({
  selector: 'app-lengthconverter',
  templateUrl: './lengthconverter.component.html',
  styleUrls: ['./lengthconverter.component.css']
})
export class LengthConverterComponent {
  meters: number = 0;
  kilometers: number | null = null;

  convertToKilometers() {
    this.kilometers = this.meters / 1000;
  }
}
<div>
<input type="number" [(ngModel)]="meters" placeholder="Enter length in meters"/>
<button (click)="convertToKilometers()">Convert to Kilometers</button>
<p *ngIf="kilometers !== null">Length: {{ kilometers }} km</p>
</div>
  1. component name: emailobfuscator
import { Component } from '@angular/core';

@Component({
  selector: 'app-emailobfuscator',
  templateUrl: './emailobfuscator.component.html',
  styleUrls: ['./emailobfuscator.component.css']
})
export class EmailObfuscatorComponent {
  email: string = '';
  obfuscatedEmail: string = '';

  obfuscateEmail() {
    this.obfuscatedEmail = this.email.replace(/@/g, '[at]').replace(/\./g, '[dot]');
  }
}
<div>
<input type="email" [(ngModel)]="email" placeholder="Enter email"/>
<button (click)="obfuscateEmail()">Obfuscate Email</button>
<p *ngIf="obfuscatedEmail">Obfuscated: {{ obfuscatedEmail }}</p>
</div>
  1. component name: dayofweekdisplay
import { Component } from '@angular/core';

@Component({
  selector: 'app-dayofweekdisplay',
  templateUrl: './dayofweekdisplay.component.html',
  styleUrls: ['./dayofweekdisplay.component.css']
})
export class DayOfWeekDisplayComponent {
  day: string = '';

  showDay() {
    const today = new Date();
    const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    this.day = days[today.getDay()];
  }
}
<div>
<button (click)="showDay()">Show Day of the Week</button>
<p *ngIf="day">Today is: {{ day }}</p>
</div>
  1. component name: percentcalculator
import { Component } from '@angular/core';

@Component({
  selector: 'app-percentcalculator',
  templateUrl: './percentcalculator.component.html',
  styleUrls: ['./percentcalculator.component.css']
})
export class PercentCalculatorComponent {
  total: number = 0;
  percentage: number = 0;
  result: number | null = null;

  calculatePercentage() {
    this.result = (this.percentage / 100) * this.total;
  }
}
<div>
<input type="number" [(ngModel)]="total" placeholder="Enter total value"/>
<input type="number" [(ngModel)]="percentage" placeholder="Enter percentage"/>
<button (click)="calculatePercentage()">Calculate Percentage</button>
<p *ngIf="result !== null">Result: {{ result }}</p>
</div>
  1. component name: primechecker
import { Component } from '@angular/core';

@Component({
  selector: 'app-primechecker',
  templateUrl: './primechecker.component.html',
  styleUrls: ['./primechecker.component.css']
})
export class PrimeCheckerComponent {
  number: number = 0;
  isPrime: boolean | null = null;

  checkPrime() {
    if (this.number <= 1) {
      this.isPrime = false;
      return;
    }
    for (let i = 2; i < this.number; i++) {
      if (this.number % i === 0) {
        this.isPrime = false;
        return;
      }
    }
    this.isPrime = true;
  }
}
<div>
<input type="number" [(ngModel)]="number" placeholder="Enter number"/>
<button (click)="checkPrime()">Check Prime</button>
<p *ngIf="isPrime !== null">{{ number }} is {{ isPrime ? '' : 'not' }} a prime number.</p>
</div>
  1. component name: cubecalculator
import { Component } from '@angular/core';

@Component({
  selector: 'app-cubecalculator',
  templateUrl: './cubecalculator.component.html',
  styleUrls: ['./cubecalculator.component.css']
})
export class CubeCalculatorComponent {
  number: number = 0;
  cube: number | null = null;

  calculateCube() {
    this.cube = Math.pow(this.number, 3);
  }
}
<div>
<input type="number" [(ngModel)]="number" placeholder="Enter number" />
<button (click)="calculateCube()">Calculate Cube</button>
<p *ngIf="cube !== null">The cube of {{ number }} is {{ cube }}</p>
</div>
  1. component name: randomcolorgenerator
import { Component } from '@angular/core';

@Component({
  selector: 'app-randomcolorgenerator',
  templateUrl: './randomcolorgenerator.component.html',
  styleUrls: ['./randomcolorgenerator.component.css']
})
export class RandomColorGeneratorComponent {
  color: string = '#ffffff';

  generateRandomColor() {
    this.color = '#' + Math.floor(Math.random()*16777215).toString(16);
  }
}
<div>
<button (click)="generateRandomColor()">Generate Random Color</button>
<p [style.background]="color">Random
</div>
  1. component name: gradecalculator
import { Component } from '@angular/core';

@Component({
  selector: 'app-gradecalculator',
  templateUrl: './gradecalculator.component.html',
  styleUrls: ['./gradecalculator.component.css']
})
export class GradeCalculatorComponent {
  score: number = 0;
  grade: string = '';

  calculateGrade() {
    if (this.score >= 90) {
      this.grade = 'A';
    } else if (this.score >= 80) {
      this.grade = 'B';
    } else if (this.score >= 70) {
      this.grade = 'C';
    } else if (this.score >= 60) {
      this.grade = 'D';
    } else {
      this.grade = 'F';
    }
  }
}
<div>
<input type="number" [(ngModel)]="score" placeholder="Enter score" />
<button (click)="calculateGrade()">Calculate Grade</button>
<p *ngIf="grade">Your grade is {{ grade }}</p>
</div>

github