Если у вас есть возможность переосмыслить проблему, вы можете сделать что-то подобное с состоянием void
Angular Animations и *ngIf
.
Импортировать BrowserAnimationsModule
в свой app.module.ts
:
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
imports: [ BrowserAnimationsModule ]
})
Родительский компонент, содержащий ваш подлежащий уничтожению компонент, может реализовать анимацию состояния void
и применить ее к дочернему компоненту с помощью *ngIf
.Например:
@Component({
animations: [
trigger('animateDestroy', [
state('void', style({ opacity: '0' })),
transition('* => void', animate('500ms ease'))
])
],
template: `
<component-to-destroy *ngIf="someBoolean" @animateDestroy>
</component-to-destroy>
`
})
export class ParentComponent {
someBoolean = true;
}
Если вы измените someBoolean
на false
, Angular удалит компонент из DOM из-за *ngIf
.Но перед этим триггер animateDestroy
с * => void
говорит Angular анимировать перед удалением элемента из DOM.
Некоторое чтение об Angular Animations и состоянии void
в документах.
Это не CSS, но это может привести к тому же эффекту, который обеспечивает CSS.Он позволяет шаблону обрабатывать состояние «уничтожен или нет» вашего компонента с помощью логического значения, вместо того, чтобы перепрыгивать через программные циклы внутри класса.
Надеюсь, это немного поможет.