【发布时间】:2018-07-06 21:54:51
【问题描述】:
我刚开始使用 Angular 并遇到*ngIf 的问题
应用启动时,*ngIf="item.done" 会根据 ToDo item 是否为 done 正确显示(或不显示)元素。但是,当我单击元素时,done 状态 更改(我是 console.logging 它),但元素 不会 消失,无论状态如何。相反,当状态返回done 时,它会再次创建相同的元素。
The onTick() function 改变 item.done 状态
-
item.done = false隐藏 Screenshot - 第一次点击 –>
item.done = true显示 - 第二次点击 –>
item.done = false显示 - 第三次点击 –>
item.done = true显示两次 Screenshot
// MOCK DATA
import { Item } from './item';
export const ITEMS: Item[] = [
{id: 1, title: 'Buy Milk', done: false},
{id: 2, title: 'Do Math', done: true},
{id: 3, title: 'Cook food', done: false}
]
// THE COMPONENT TypeScript
import { Component, OnInit } from '@angular/core';
import { ITEMS } from './mock-items';
import { Item } from './item';
@Component({
selector: 'app-list',
templateUrl: './list.component.html',
styleUrls: ['./list.component.css']
})
export class ListComponent implements OnInit {
items: Item[] = [];
constructor() {
this.items = ITEMS
}
ngOnInit() {
}
onTick(item) {
console.log('Item was: ', item.done)
item.done = !item.done
console.log('Item became: ', item.done)
}
}
<!-- THE COMPONENT HTML -->
<div class="list">
<div class="list--header">
<h1>List</h1>
</div>
<div class="list--content">
<ul class="list--items">
<li *ngFor="let item of items">
<div class="checkbox" (click)="onTick(item)">
<input type="checkbox" style="display: none">
<i *ngIf="item.done" class="tick fas fa-check"></i>
</div>
{{item.title}}
</li>
</ul>
</div>
<div class="list--footer">
</div>
</div>
【问题讨论】:
-
发布您的代码,...
-
试试
(click)="item.done = !item.done" -
@Nickolaus 添加了!
-
@NadhirFalta 试过了!结果相同。
-
你能放个小插曲吗?
标签: html css angular show-hide