Angular6 - анимация при изменении значения - PullRequest
0 голосов
/ 03 октября 2018

Я искал в Google, как делать то, что хочу, и пробовал некоторые вещи, но ничего не помогло, и я нашел много учебника по AngularJS, но не Angular6 .. поэтому я надеюсь, что вы сможете мне помочь.

Я хочу сделать затухание, когда значения моего массива меняются (по щелчку), поэтому я скачал ng-animate, но это не дает мне поведения, которое я ищу.В настоящее время у меня есть два компонента, поэтому первый:

HTML:

 <div style="text-align: center; margin: 20px 0">
      <div class="buttonSelector" *ngFor="let select of buttonSelector" (click)="getSelectArray(select.title)"
           [ngClass]="{'selected': select.title === selectedArray.title.toUpperCase() }">
        <p>{{ select.title }}</p>
      </div>
    </div>

    <app-infoapp [selectedArray]="selectedArray"></app-infoapp>

Там я меняю свой selectedArray, отправляя переменную getSelectArray (), а затем отправляю ее своемуКомпонент app-infoapp '.На моем компоненте 'app-infoapp' мы можем найти это:

import {Component, Input, OnInit} from '@angular/core';
import { trigger, transition, useAnimation } from '@angular/animations';
import {bounce, fadeIn} from 'ng-animate';

@Component({
  selector: 'app-infoapp',
  templateUrl: './infoapp.component.html',
  styleUrls: ['./infoapp.component.css'],
  animations: [
    trigger('fade', [transition('* => *', useAnimation(fadeIn, {delay: 0.2}))])
  ]
})
export class InfoappComponent implements OnInit {

  @Input() selectedArray;
  fade: any;

  constructor() {
  }
}

Так что теперь, когда я обновляю свою страницу, компонент исчезает, и это круто, но когда я изменяю свой массив, нажимая кнопку, чтобыдругой массив отправляется в мой компонент 'app-infoapp', он не оживляет в другой раз.

Надеюсь, я был ясен, и вы сможете мне помочь.

Если выМне нужно больше информации, или, если я не совсем уверен, скажите мне, я отвечу как можно быстрее.

Спасибо.

1 Ответ

0 голосов
/ 03 октября 2018

Я попробовал тот же пример, который я предложил вам (kdechant.com/blog/angular-animations-fade-in-and-fade-out) с вашим примером кода, и он работает:

ИмпортBrowserAnimationsModule в модуле приложения (app.module.ts):

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
  declarations: [...],
  imports: [BrowserAnimationsModule],
  bootstrap: [AppComponent]
})
export class AppModule { }

parent.component.html

<div style="text-align: center; margin: 20px 0">
  <div *ngFor="let select of buttonSelector" (click)="getSelectArray(select.title)">
    <p>{{ select.title }}</p>
  </div>
</div>
<app-infoapp [selectedArray]="selectedArray"></app-infoapp>

parent.component.ts

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

@Component({
  selector: 'app-parent',
  templateUrl: './parent.component.html',
  styleUrls: ['./parent.component.css']
})
export class ParentComponent implements OnInit {
  public buttonSelector = [];
  public selectedArray = [];

  constructor() { }

  ngOnInit() {
    this.buttonSelector = [{title: 'save'}, {title: 'add'}, {title: 'edit'}, {title: 'delete'}];
  }

  getSelectArray(title: string) {
    this.selectedArray.push({title:title});
  }

}

info-app.component.html

<div class="info" *ngFor="let selected of selectedArray" [@simpleFadeAnimation]="'in'">
    {{ selected.title }}
</div>

info-app.component.ts

import {Component, Input, OnInit} from '@angular/core';
import { trigger, transition, state, style, animate } from '@angular/animations';

@Component({
  selector: 'app-infoapp',
  templateUrl: './info-app.component.html',
  styleUrls: ['./info-app.component.css'],
  animations: [
    trigger('simpleFadeAnimation', [
      state('in', style({opacity: 1})),
      transition(':enter', [
        style({opacity: 0}),
        animate(600 )
      ]),
      transition(':leave',
        animate(600, style({opacity: 0})))
    ])
  ]
})
export class InfoAppComponent implements OnInit {
  @Input() selectedArray = [];

  constructor() {}

  ngOnInit() {}
}
...