Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:angular:angular_animacio

Ez a dokumentum egy előző változata!


< Angular

Angular - Animáció

Animációkról

src/app/app.config.ts
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
 
 
 
//...
 
export const appConfig: ApplicationConfig = {
  providers: [
    //...
    provideAnimationsAsync()   // <--
  ]
};

Függvények importálása

Abban a komponensben ahol az animációt szeretnénk használni:

import {
  animate,
  state,
  style,
  transition,
  trigger,
  // ...
} from '@angular/animations';

Az animáció helye

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css'],
  animations: [
    // animációs utasítások
  ]
})

Átmenet animálása

Készítsünk egy trigger-t, egyelőre üresen:

  animations: [
    trigger('result', [
      state('', style({})),
      state('', style({})),
      transition('', []),
      transition('', [])
    ])
  ]

Egyszerű példa

<p [@triangle]="doboz">triangle works!</p>
 
<button (click)="mehet()">
  Mehet
</button>
import { Component } from '@angular/core';
// import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { 
  animate, 
  state, 
  style, 
  transition, 
  trigger 
} from '@angular/animations';
 
@Component({
  selector: 'app-triangle',
  standalone: true,
  imports: [],
  animations: [
    trigger('triangle', [
      state('egy', style({
        backgroundColor: 'red',
      })),
      state('ketto', style({
        backgroundColor: 'green',
      })),
      transition('egy => ketto', [
        animate('4s')
      ])
    ])    
  ],
 
  templateUrl: './triangle.component.html',
  styleUrl: './triangle.component.css'
})
export class TriangleComponent {
 
  doboz = 'egy';
 
 
  mehet() {
    this.doboz = 'ketto';  
  }
}

Háromszög terület számítás eredménye

Szeretnénk az eredményt animáltan megjeleníteni.

src/app/triangle/triangle.component.ts
import { animate, state, style, transition, trigger } from '@angular/animations';
import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
 
@Component({
  selector: 'app-triangle',
  templateUrl: './triangle.component.html',
  styleUrls: ['./triangle.component.scss'],
  animations: [
    trigger('result', [
      state('disable', style({
        backgroundColor: 'white',        
      })),
      state('enable', style({
        backgroundColor: 'blue',
      })),
      transition('disable => enable', [
        animate('4s')
      ]),
      transition('enable => disable', [
        animate('4s')
      ])
    ])
  ]
})
export class TriangleComponent implements OnInit {
  base = new FormControl('');
  height = new FormControl('');
  area = new FormControl('');
  isVisible = false;
  constructor() { }
 
  ngOnInit(): void {
  }
 
  onCalcButtonClick() {
    this.isVisible = true;
    let area = this.calcTriangleArea(this.base.value, this.height.value);
    this.area.setValue(area);
  }
  onDeleteButtonClick() {
    this.isVisible = false;
    this.base.setValue('');
    this.height.setValue('');
    this.area.setValue('');
  }
  calcTriangleArea(base: number, height: number) {
    return base * height / 2;
  }
}
src/app/triangle/triangle.component.html
<div class="triangleForm">
    <div class="mt-3">
        <label for="base" 
        class="form-label">Alap</label>
        <input type="text" [formControl]="base"
        id="base" class="form-control">
    </div>
    <div class="mt-3">
        <label for="height" 
        class="form-label">Magasság</label>
        <input type="text" [formControl]="height"
        id="height" class="form-control">
    </div>
 
    <div class="mt-3">
        <button class="btn btn-primary me-2" (click)="onCalcButtonClick()">Számít</button>
        <button class="btn btn-primary" (click)="onDeleteButtonClick()">Töröl</button>
    </div>
 
    <div class="mt-3 p-1" [@result]="isVisible ? 'enable' : 'disable'">
        <label for="area" 
        class="form-label">Terület</label>
        <input type="text" [formControl]="area"
        id="area" class="form-control">
    </div>
</div>

A teljes projekt a GitHubon:

oktatas/web/angular/angular_animacio.1752701911.txt.gz · Utolsó módosítás: 2025/07/16 23:38 szerkesztette: admin