Как показать форму при нажатии с некоторой задержкой на Angular 7?

Мне нужно изменить некоторый код angularJS в Angular 7.

У меня есть функция, которая onClick показывает мне новую форму ниже основной.

HTML

<img [hidden]=  "!skillsToDelete"
 (click) = "showFormDelete(skill)" title = "Delete"
 class = "cross"
 src = "../../../assets/icon/deletex.png">

Машинопись

    this.showCompDelete = false;

showFormDelete(skill) {
    this.showCompDelete = !this.showCompDelete;
    this.skillsToDelete.push(skill);
}

КОМПОНЕНТ УДАЛЕНИЯ HTML

<div class = "col-md-12 col-sm-12 newForm" id = "deleteSkill" *ngIf = "showCompDelete">

CSS

.newForm{
    padding-left: 0;
    height: auto;
    opacity: 1;
    transition: height ease 0.3s, opacity ease 0.3s, margin-bottom ease 0.3s, padding-top ease 0.3s
}

Этот переход не работает, я также пробовал -webkit, но ничего не происходит.

Это был старый:

HTML

<div class = "col-md-12 col-sm-12 newForm" id = "deleteSkill" style = "display: block;">

JS

 $scope.showDeleteForm = function () {
        $('#formSkill').hide(300);
        $('#formExp').hide(300);
        $('#initSkills').hide(300);
        $('#certifiedSkill').hide(300);

        if ($scope.skillToDelete.length){
            $('#deleteSkill').show(300);
            setTimeout(function () {
                $('.yesno').show(200);
            }, 300);
        }
        else{
            $('#deleteSkill').hide(300);
            $('.yesno').hide(0);
        }

    };

Я хотел бы избежать css и добавить что-то вроде «show (300)» в свой TS, но если у вас есть идеи и в css, я был бы признателен.

извините за вопрос, но почему вы хотите избежать css? а как насчет анимации angular 7?

לבני מלכה 10.04.2019 10:32

думал так же. вы должны использовать угловую анимацию. youtube.com/watch?v=nLRP8Uhx-Qo, возможно, посмотрит это.

Vato 10.04.2019 10:35

Я просто думал о чем-то вроде этого "show(300)", но я не знаю, смогу ли я, поэтому, если это невозможно, CSS в порядке. Я искал AngAnimation, но это требует больше времени, очевидно, если нет другого решения, я рассмотрю возможность его использования @לבנימלכה

user11171372 10.04.2019 10:35

хорошо.. что это this.skillsToDelete.push(skill); (ответить обязательно)

לבני מלכה 10.04.2019 10:37

вы хотите только с задержкой или с анимацией?

לבני מלכה 10.04.2019 10:41

Мне нужно удалить навыки у пользователя, поэтому я должен нажать эти «выбранные навыки» в другом компоненте, который их удалит.

user11171372 10.04.2019 10:43

я бы предпочел анимацию, но только для запуска простой задержки.

user11171372 10.04.2019 10:44

что вы об этом думаете? какие-либо предложения? @לבנימלכה

user11171372 10.04.2019 10:45
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
8
729
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы просите не использовать css, вы можете использовать angular-animation

См. рабочий пример кода

Импортируйте animation для ts и используйте код, как показано ниже.

В animate('1000ms 3000ms' установите время анимации (в данном примере 1 секунда) и время задержки (в данном примере 3 секунды)

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

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ],
  animations: [
        trigger('showAnimation', [
            transition(':enter', [
                style({opacity: 0}),
                animate('1000ms 3000ms', style({opacity: 1}))
            ]),
            transition(':leave', [
                state('invisible', style({opacity: 0})),
                style({opacity: 1}),
                animate('1000ms 3000ms', style({opacity: 0}))
            ])
        ])
    ],
})
export class AppComponent  {
skillsToDelete=false;
showCompDelete=false;
animationState = "leave";

showFormDelete(skill) {
    this.showCompDelete = !this.showCompDelete;
    this.animationState=this.animationState= = "enter"?'leave':'enter';
    // this.skillsToDelete.push(skill);
}
}

В html используйте *ngIf и используйте код, как показано ниже:

<img *ngIf=  "!skillsToDelete"
 (click) = "showFormDelete(skill)" title = "Delete"
 class = "cross"
 src = "https://i.stack.imgur.com/B4Ha4.jpg">

 <div class = "col-md-12 col-sm-12 newForm" id = "deleteSkill" *ngIf = "showCompDelete" [@showAnimation] = "animationState"> 
 form with animation
 </div>

Другие вопросы по теме