我有一个问题,我试图仅使用 angular 和 css 来实现手风琴,并全部展开并全部折叠。展开全部/折叠所有链接都在父组件中,而手风琴在子组件中。单击展开全部/折叠所有子属性将通过@input 变量更改。这是代码片段
现在问题是当我加载手风琴的页面内容时处于活动状态..工作正常...单击折叠..所有手风琴隐藏..工作正常...单击其中一个手风琴(在面板标题上)..它扩展为更改 panelHide 属性...工作正常...
现在,当我再次单击折叠所有链接时,问题就出现了。它应该再次设置@Input panelHide,并且手风琴应该折叠..但它没有......什么都没有发生..似乎它保留了它的原始状态。并且代码失败..
父组件.html
<a (click)="expandAll(true)">Expand All</a>
<a (click)="expandAll(false)">Collapse All</a>
<child-component [isAllCollapsed]="isAllCollapsed"></child-component>
父组件.ts
isAllCollapsed:boolean=false;
expandAll(action:boolean){
this.isAllCollapsed=action
}
Child.component.html
<div [ngClass]="'is-active':!panelHide">
<a (click)="panelHide=!panelHide">Panel Header</a>
<div>
Panel Content--- hide and show according to is-active class, with help of css.
<div>
</div>
child.component.ts
@Input('isAllCollapsed') panelHide:boolean;
我已经尝试过 ngOnChanges .. 更改不会在 panelHide 上显示任何更改,一旦我第二次单击 Collapse all ... 如上所述。