首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >*ngFor和过滤管

*ngFor和过滤管
EN

Stack Overflow用户
提问于 2017-11-01 17:40:38
回答 1查看 446关注 0票数 0

你所看到的:

  • 可以选择的调色板组件列表。
  • 列表上选定的调色板
  • 选择的调色板不在列表中了!错了!
  • 每次选择调色板时,只会绘制之前选择的调色板,这会导致列表以重复的形式展开。

我所做的:

代码语言:javascript
复制
<ng-container
          *ngFor="let palette of palettes | exclude: currentPalette.name">
    <div class="span-6">
      <app-palette
              (click)="choosePalette(palette)"
              [palette]="palette"
              [name]="palette.name"
              [icon]="palette.icon.name">
      </app-palette>
    </div>
  </ng-container>

真正有用的是:

代码语言:javascript
复制
<ng-container
          *ngFor="let palette of palettes">
    <div class="span-6" *ngIf="palette.name !== currentPalette.name">
      <!-- TODO pipe this to not show already selected -->
      <app-palette
              (click)="choosePalette(palette)"
              [palette]="palette"
              [name]="palette.name"
              [icon]="palette.icon.name">
      </app-palette>
    </div>
  </ng-container>

“排除”管道只是一个过滤器(array.filter(p => p.name !==名称));

当我调试整个程序时,它向我表明,所有的东西都处理得很好,但是只有应该显示的组件正在被重新绘制,但是其余的部分与应该消失的项保持在一起。这会导致项目重复,并淹没列表。

我怎么才能用烟斗做这件事?或者我在哪里弄错了?

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 22:40:04

好吧我解决了。这不是管道的问题,而是呈现DOM元素的问题。

app-palette有ngStyle指令,它引用如下对象:

代码语言:javascript
复制
[ngStyle]=palette.foregound

只需将所有引用更改为:

代码语言:javascript
复制
[ngStyle]=palette?.foreground

瞧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47060689

复制
相关文章

相似问题

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