2017-04-07 97 views
0

我有一个多维数组挂钩到等待数据库状态更新的反应性轮询器。如果我加载状态1x,则UI按预期工作。Angular2轮询重置ng-bootstrap accordin

问题:当我打开轮询器时,它会导致手风琴状态关闭。

代码:

<ngb-accordion #acc="ngbAccordion" [closeOthers]="true"> 
    <ngb-panel *ngFor="let group of fishGroups | async" title="{{group[0].source.originalname}}"> 
     <template ngbPanelContent> 
      ...... 
     </template> 
    </ngb-panel> 
</ngb-accordion> 


ngOnInit() { 
    console.log('ngOnInit'); 

    this.fishGroups = this.fisheService.elements 
    //ensure not null 
    .filter((arr: DTOfish[]) => (arr != null && arr.length > 0)) 
    // create milti dimensional array 

    .map((fishes : DTOfish[]) => { 
     let groups: DTOfish[][] = []; 
     fishes.forEach((fish: DTOfish) => { 
     //note double assignment : if null create 
     let group: DTOfish[] = groups[fish.source.id] = groups[fish.source.id] ? groups[fish.source.id] : []; 
     group.push(fish); 
     }); 

     //make sparse array dense 
     return groups.filter(value => !!value); 
    }); 

    this.fishes = this.fisheService.elements.map((fishes: DTOfish[]) => { 
    return fishes.filter((fish: DTOfish) => !fish.model.isFailed) 
    }); 


    this.fisheService.loadAll(); 

    this._interval = global.setInterval(() => { 
    console.log('fishComponent Poller'); 
    this.fisheService.loadAll(); 
    }, 2000); 

} 

问: 如何保持在轮询返回更新状态所选择的内容面板打开?

回答