代码之家  ›  专栏  ›  技术社区  ›  Nikson

如何在角度4中编程打开手风琴

  •  1
  • Nikson  · 技术社区  · 6 年前

    我在Angular4应用程序中工作,在两个组件中我有相同的手风琴。我想做的是,如果用户从第一个组件中单击手风琴,我想获取所选手风琴的索引并将其传递到第二个组件,我将所选手风琴设置为打开d在页面加载时显示其中的内容(无需单击)

    目前我在第一个组件中有一个accordion,如果从api中绑定多个accordion,则所选索引将动态更改。

    这是我的代码:

    https://stackblitz.com/edit/angular-bootstrap-carousel-dynamic2-tsrt1w?file=app%2Fone%2Fone.component.html

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nitishkumar Singh user3744342    6 年前

    您可以使用route params传递id,查看下面的示例代码,例如:

    one.component.html一个组件

    <h5>One Component</h5>
    <h6>Categories</h6>
    <div class="accordion col-sm-12" id="accordion1" *ngFor='let data of dropdownData; let i=index'>
        <div class="accordion-group">
    
            <div class="accordion-heading">
                <a class="accordion-toggle h6" data-toggle="collapse"  routerLink="/two/{{i}}" data-parent="#accordion1" href="#collapseTwo + i">
                    {{data?.CAMD_ENTITY_DESC}}
                </a>
            </div>
        </div>
    </div>
    <br>
    

    应用程序路由

    const appRoutes: Routes = [
          {path:'one',component:OneComponent},
           {path:'two/:id',component:TwoComponent}]
    

    双组分.ts

    import { Component, OnInit, ViewChildren, QueryList, AfterViewInit, ElementRef } from '@angular/core';
    import { ActivatedRoute } from '@angular/router';
    import { CartdataServiceService } from '../cartdata-service.service';
    declare var $:any;
    @Component({
      selector: 'app-two',
      templateUrl: './two.component.html',
      styleUrls: ['./two.component.css']
    })
    export class TwoComponent implements OnInit,AfterViewInit {
    dropdownData: any;
    id:string;
    
    @ViewChildren('accordian') components:QueryList<ElementRef>;
    constructor( private route: ActivatedRoute, private CartdataService: CartdataServiceService) {}
     ngOnInit() {
        this.CartdataService.get_New_Products().subscribe(
          data => {
            this.dropdownData = data;
              console.log(this.dropdownData);        
          });
    
           this.id = this.route.snapshot.paramMap.get('id');
      }
    
      ngAfterViewInit(){
        // print array of CustomComponent objects
    
        this.components.changes.subscribe(() => {
          let elem=this.components.toArray()[this.id];
    
          $(elem.nativeElement).trigger("click");
    
         console.log(elem);
      });
    }
    
    }
    

    现在您可以使用id并为accordion选择所需的索引。

    Example Link