首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >*ngFor的角动画仅适用于单击的值,而不是所有元素

*ngFor的角动画仅适用于单击的值,而不是所有元素
EN

Stack Overflow用户
提问于 2019-02-05 04:07:29
回答 2查看 577关注 0票数 0

当单击使用*ngFor生成的特定div时,我希望应用动画。当前,当单击时,它适用于每个div。我怎样才能做到这一点?

代码语言:javascript
复制
   animations: [
trigger('changeDivSize', [
  state('initial', style({
    width: '30px',
    height: '30px',
    opacity: '0.5',
    margin: '10px'
  })),
  state('final', style({
    width: '32px',
    height: '32px',
    opacity: '1',
    margin: '10px'
  })),
  transition('initial<=>final', animate('200ms')),
  transition('final=>initial', animate('200ms'))
]),

]

代码语言:javascript
复制
  changeState() {
    this.currentState = this.currentState  === 'initial' ? 'final' : 'initial';
  }
代码语言:javascript
复制
    <div class="row">
      <div *ngFor="let group of groups" class="col-1">
      <div  (click)="changeState()" [@changeDivSize]=currentState  [ngStyle]="{'background-color': group.colorCode}"></div>
    </div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-05 05:17:55

代码语言:javascript
复制
 changeState(index) {
    this.currentState[index] = this.currentState[index]  === 'initial' ? 'final' : 'initial';
  }

最好如上面所示,取组内各项目的数组currentState

然后,对组的单个元素使用currentStatei。

代码语言:javascript
复制
<div class="row">
   <div *ngFor="let group of groups, index as i" class="col-1">
   <div  (click)="changeState(i)" [@changeDivSize]=currentState[i]  [ngStyle]="{'background-color': group.colorCode}"></div>
</div>

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-02-05 04:49:12

您可以将元素的索引与*ngFor一起使用,以便为每个元素提供一个单独的currentState值,这样动画就可以处理单个元素。

代码语言:javascript
复制
  <div *ngFor="let group of groups;let i = index" class="col-1">
    <div  (click)="changeState(i)" 
          [@changeDivSize]=group.currentState  
          [ngStyle]="{'background-color': group.colorCode}">
    </div>
  </div>
代码语言:javascript
复制
  public changeState(index: number): void {
      console.log(index)
      this.groups[index].currentState = 
          (this.groups[index].currentState  === 'initial') ? 'final' : 'initial';
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54527571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档