angular - 在加载视图之前从 api 加载数据
问题描述
我有简单的手风琴:
HTML
<div *ngFor="let item of showDirNames | async | filter: name; let i = index;">
<button class="accordion" (click)="toggleAccordion($event, i, item.name)"> {{item.name}} </button>
<div class="panel" hide="!item.isActive">
<p *ngFor="let child of showFilesNames | async | filter: name"> {{child.name}} </p>
</div>
</div>
TS
toggleAccordion(event, index, item) {
this.activeIndex = index;
var element = event.target;
if(element.classList.toggle("active")){
this.showFiles(item);
}
if(this.element[index].isActive) {
this.element[index].isActive = false;
} else {
this.element[index].isActive = true;
}
var panel = element.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
}
还有我如何获取数据
showFiles(filename: string)
{
this.showFilesNames = this.uploadService.getFiles(filename);
this.showFilesNames.forEach(element => {});
}
它应该看起来如何?我想单击手风琴的标题,它给了我标题,然后这个标题发送到我的后端,然后后端给我文件名。问题是我的视图是在数据出现之前加载的。
解决方案
我会继续<ng-container *ngIf="showFileNames | async as fileNames">
等待,直到变量有数据。然后循环<p *ngFor="let fileName of fileNames | filter : name>"
。有了这个,你可以实现我想要的。
推荐阅读
- mysql - MySQL 使用 WHERE 加入同一张表
- android - 房间 UNIQUE 约束失败
- mysql - SQL:创建自动将一些值复制到另一个表中的触发器
- php - Laravel timestampTz 列的时区错误
- vb.net - 有没有办法检查是否存在引用以防止编译错误?
- c# - 单元测试错误 System.InvalidCastException:
- python-3.x - 适用于 Azure SQl 数据库和 python 的带有 python 3 的 Databricks
- c# - Roslyn SyntaxTree - 更改字段值
- c++ - 无法使用
在视觉工作室 - angular - 你如何处理 Angular 中的用户设置和纯管道?