【发布时间】:2019-12-22 16:04:17
【问题描述】:
我有一个以角度编写的待办事项列表应用程序,我想在每个待办事项创建时淡入淡出,并在它们被删除之前淡出它们。如果我在 todo-item 组件中应用效果,我只能让淡入效果起作用,但是淡出效果不起作用。我已经尝试将动画添加到父 todos 组件,但是对于淡入或淡出都不起作用。
todos.component.ts(待办事项的父容器)
animations: [
trigger('fade', [
transition('void => *', [
style({opacity: 0}),
animate(1000, style({opacity: 1}))
]),
transition('* => void', [
animate(1000, style({opacity: 0}))
])
])
]
})
export class TodosComponent implements OnInit {
todos:Todo[];
constructor(private todoService:TodoService) {
}
ngOnInit() {
this.todoService.getTodos().subscribe(todos=> { this.todos = todos});
}
deleteTodo(todo:Todo){
this.todos.splice(this.todos.indexOf(todo), 1);
this.todoService.deleteTodo(todo).subscribe();
}
addTodo(todo:Todo){
this.todoService.addTodo(todo).subscribe(todo=>{
this.todos.push(todo);
})
}
}
todos.component.html(待办事项的父容器)
<app-add-todo (addTodo)="addTodo($event)"></app-add-todo>
<app-todo-item
@fade
*ngFor="let todo of todos"
[todo] = "todo"
(deleteTodo)="deleteTodo($event)"
>
</app-todo-item>
todo-item.component.ts
export class TodoItemComponent implements OnInit {
@Input() todo: Todo;
@Output() deleteTodo: EventEmitter<Todo> = new EventEmitter();
setClasses(){
let classes = {
todo: true,
'is-complete': this.todo.completed
}
return classes
}
onToggle(todo) {
todo.completed = !todo.completed;
this.todoService.toggleCompleted(todo).subscribe( todo => console.log(todo));
}
onDelete(todo){
this.deleteTodo.emit(todo);
}
constructor(private todoService:TodoService) { }
ngOnInit() {
}
}
todo-item.component.html
<div [ngClass] = "setClasses()">
<p>
<input (change)="onToggle(todo)" type="checkbox"/>
{{todo.title}}
<button (click)="onDelete(todo)" class="del">x</button>
</p>
</div>
【问题讨论】:
标签: javascript html angular animation