Я использую список ul, который отображает данные из массива, массив изначально пуст, для которого я использовал другой «пустой» шаблон, вот код:
<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 = [];
}
}Проблема: По какой-то странной причине шаблон #пустой запускается только один раз в начале, когда данные пусты, но как только данные заполняются fillData(), а затем снова очищаются clearData(), шаблон #пустой не запускается





В экспрессии *ngIf проверьте data.length, а не данные:
<ul class = "list-group" *ngIf = "data.length else empty">
<li *ngFor = "let num of data">
<span>{{num}}</span>
</li>
</ul>
В вашем случае *ngIf проверяет, существуют ли массивы. Когда вы очистили данные, ссылки все еще там
ПРИМЕР КОДА
Привет, попробуйте следующий код:
в файле .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 = [];
}