ng-template 不会在数据变空时触发
ng-template wont trigger when data gets empty
我正在使用一个列表 ul
来显示数组中的数据,该数组最初是空的,为此我使用了另一个模板 "empty" 这里的模板是代码:
<ul class="list-group" *ngIf="data else empty">
<li *ngFor="let num of data">
<span>{{num}}</span>
</li>
</ul>
<button class="btn btn-sm btn-primary" (click)="fillData()">Fill</button>
<button class="btn btn-sm btn-primary" (click)="clearData()">clear</button>
<ng-template #empty>
<span>.... list empty....</span>
</ng-template>
现将上述代码脚本如下
export class QlistComponent implements OnInit {
data: any[];
fillData() {
this.data = [1, 2, 3];
}
clearData() {
this.data = [];
}
}
问题: 由于某些奇怪的原因 #empty 模板仅在开始时数据为空时触发一次,但一旦数据填充 fillData()
然后再次清除 clearData()
#empty 模板不会被触发
在*ngIf
表达式检查data.length
不是数据:
<ul class="list-group" *ngIf="data.length else empty">
<li *ngFor="let num of data">
<span>{{num}}</span>
</li>
</ul>
在你的情况下 *ngIf
检查数组是否存在。清除数据后,引用仍然存在
CODE EXAMPLE
您好试试下面的代码:
在 .html 文件
<ul class="list-group" *ngIf="data.length>0 else empty">
<li *ngFor="let num of data">
<span>{{num}}</span>
</li>
</ul>
<button class="btn btn-sm btn-primary" (click)="fillData()">Fill</button>
<button class="btn btn-sm btn-primary" (click)="clearData()">clear</button>
<ng-template #empty>
<span>.... list empty....</span>
</ng-template>
.ts 文件
data: any[]=[];
fillData() {
this.data = [1, 2, 3];
}
clearData() {
this.data = [];
}
我正在使用一个列表 ul
来显示数组中的数据,该数组最初是空的,为此我使用了另一个模板 "empty" 这里的模板是代码:
<ul class="list-group" *ngIf="data else empty">
<li *ngFor="let num of data">
<span>{{num}}</span>
</li>
</ul>
<button class="btn btn-sm btn-primary" (click)="fillData()">Fill</button>
<button class="btn btn-sm btn-primary" (click)="clearData()">clear</button>
<ng-template #empty>
<span>.... list empty....</span>
</ng-template>
现将上述代码脚本如下
export class QlistComponent implements OnInit {
data: any[];
fillData() {
this.data = [1, 2, 3];
}
clearData() {
this.data = [];
}
}
问题: 由于某些奇怪的原因 #empty 模板仅在开始时数据为空时触发一次,但一旦数据填充 fillData()
然后再次清除 clearData()
#empty 模板不会被触发
在*ngIf
表达式检查data.length
不是数据:
<ul class="list-group" *ngIf="data.length else empty">
<li *ngFor="let num of data">
<span>{{num}}</span>
</li>
</ul>
在你的情况下 *ngIf
检查数组是否存在。清除数据后,引用仍然存在
CODE EXAMPLE
您好试试下面的代码:
在 .html 文件
<ul class="list-group" *ngIf="data.length>0 else empty">
<li *ngFor="let num of data">
<span>{{num}}</span>
</li>
</ul>
<button class="btn btn-sm btn-primary" (click)="fillData()">Fill</button>
<button class="btn btn-sm btn-primary" (click)="clearData()">clear</button>
<ng-template #empty>
<span>.... list empty....</span>
</ng-template>
.ts 文件
data: any[]=[];
fillData() {
this.data = [1, 2, 3];
}
clearData() {
this.data = [];
}