Cod*_*ior 2 accordion twitter-bootstrap typescript angular
我创建了一个手风琴组件,用于填充父组件动态提供的值。我无法实现的是每个手风琴都应该响应各自的点击。目前,无论我单击哪个手风琴,它都会折叠并展开第一个。这是我的代码:
数组parent.component.ts
import { Component, AfterViewInit, OnInit } from '@angular/core';
@Component({
selector: 'my-array-parent',
templateUrl: './array-parent.component.html',
})
export class ArrayParentComponent implements OnInit {
private content: Test[];
ngOnInit(): void {
this.content = [{
heading: 'header1',
testData: [{
title: 'title1',
content: 'content1'
}, {
title: 'title2',
content: 'content2'
}]
}, {
heading: 'header2',
testData: [{
title: 'title1',
content: 'content1'
}, {
title: 'title2',
content: 'content2'
}]
}]
}
}
export class Test {
heading: string;
testData: TestItem[];
}
export class TestItem {
title: string;
content: string;
}
Run Code Online (Sandbox Code Playgroud)
array-parent.component.html
<ng-container *ngFor="let item of content">
<my-array [data]="item"></my-array>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
数组.component.ts
import { Component, Input, OnInit, AfterViewInit } from '@angular/core';
@Component({
selector: 'my-array',
templateUrl: './array.component.html'
})
export class ArrayComponent implements OnInit {
@Input() data: any;
private contentObj: any;
constructor() { }
ngOnInit(): void {
this.contentObj = this.data;
}
}
Run Code Online (Sandbox Code Playgroud)
数组.component.html
<h2>{{contentObj.heading}}</h2>
<div class="columnOne" id="accordion" role="tablist" aria-multiselectable="true">
<div *ngFor="let item of contentObj.testData;">
<div role="tab" id="headingone">
<h4>
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseone" aria-expanded="true" aria-controls="collapseone">
{{item.title}}
</a>
</h4>
<div id="collapseone" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingone">
<div class="panel-body">
{{item.content}}
</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我真正想做的是每个手风琴只有在被点击时才应该展开和折叠。目前,无论我单击哪个手风琴,只有第一个会展开和折叠。我知道这是因为它获得了一个静态 ID。我尝试了一些可能的选项来为所有字段分配动态 ID,但没有成功。任何帮助是极大的赞赏。
您需要绑定引导程序依赖的属性来相应地切换 div:
存在:
id, href,aria-controlsid,aria-labeledby 这是工作示例中的一个片段:
<div class="panel-heading" role="tab" [id]="'heading'+data.id">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" [href]="'#collapse'+data.id" aria-expanded="true" [attr.aria-controls]="'collapse'+data.id">
{{data.header}}
</a>
</h4>
</div>
<div [id]="'collapse'+data.id" class="panel-collapse collapse" role="tabpanel" [attr.aria-labelledby]="'heading'+data.id">
<div class="panel-body">
{{data.content}}
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
https://stackblitz.com/edit/angular-osvv72
请注意,我们必须为 aria 属性添加前缀,因为它们不是<div>& 的原生属性<a>。
| 归档时间: |
|
| 查看次数: |
16715 次 |
| 最近记录: |