Mar*_*oni 4 ng-bootstrap angular
我有一个 SPA(单页应用程序),其中有一个表可以扩展详细信息。
这是代码:
<div class="row mt-4" *ngFor="let row of rows">
<div class="col-12">
<button class="btn btn-link" (click)="isCollapsed = !isCollapsed"
[attr.aria-expanded]="!isCollapsed" aria-controls="collapseExample">
<i class="fa" aria-hidden="true"></i>
Details
</button>
<div [ngbCollapse]="isCollapsed">
{{ row.detail}}
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我不能让它只扩展点击列的细节
小智 8
我是这样解决的,我想这比实际更改数据本身要方便一些。
在组件的 HTML 部分,获取 ngFor 循环的索引并在事件绑定和 ngbCollapse 指令中使用此索引变量。要完成这项工作,您需要在 component.ts 文件中包含一个 booleans 属性数组。
组件 HTML
<div *ngFor="let row of rows; let i = index">
<button type="button" (click)="isCollapsed[i] = !isCollapsed[i]">
Button Text
</button>
<div [ngbCollapse]="isCollapsed[i]">
.. some content ..
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
组件打字稿
<div *ngFor="let row of rows; let i = index">
<button type="button" (click)="isCollapsed[i] = !isCollapsed[i]">
Button Text
</button>
<div [ngbCollapse]="isCollapsed[i]">
.. some content ..
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
您有一个变量isCollapsed来控制每个 div 的展开/折叠(因此要么全部展开,要么全部折叠)。你还没有发布打字稿,但我假设它看起来像这样:
export class MyComponent {
public isCollapsed: boolean = true;
public rows: object[] = [
{ detail: 'x' },
{ detail: 'y' }
];
}
Run Code Online (Sandbox Code Playgroud)
您需要单独的isCollapsed变量来跟踪各个 div。
如果您可以控制其中的对象,则rows可以将其添加到那里:
public rows: object[] = [
{
detail: 'x',
isCollapsed: true
},
{
detail: 'y',
isCollapsed: true
}
];
Run Code Online (Sandbox Code Playgroud)
然后按如下方式更改 HTML:
<div class="row mt-4" *ngFor="let row of rows">
<div class="col-12">
<button class="btn btn-link" (click)="row.isCollapsed = !row.isCollapsed"
[attr.aria-expanded]="!row.isCollapsed" aria-controls="collapseExample">
<i class="fa" aria-hidden="true"></i>
Details
</button>
<div [ngbCollapse]="row.isCollapsed">
{{ row.detail}}
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这将允许您控制展开/折叠单个 div。请参阅此 Plunker以获取演示
| 归档时间: |
|
| 查看次数: |
3938 次 |
| 最近记录: |