代码之家  ›  专栏  ›  技术社区  ›  John Theoden

四种不同变体的NGFOR解决方案

  •  -1
  • John Theoden  · 技术社区  · 6 年前

    我有4个成对拆分的按钮(A1、A2和B1、B2)。

    我也有4个不同的段落,我想显示基于选中按钮的变化…4变化应该是A1B1,A1B2,A2B1和A2B2…

    我设法使 plunker 为了说明一些基本原理,但是仍然没有找到解决方案,如何使ngfor只加载一个匹配的段落到按钮组合,因此,如果我单击按钮a1和按钮b2,它将只显示该代码的段落。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ajanth    6 年前

    你需要使用*ngif,并有一个方法来更新任何更改时的选择,我想这就是你要找的,

    changeA( aValue ) {
            this.currentA = aValue;
            this.aElem = this.currentA;
            this.selectedMonthElem = this.currentA;
            this.setSelection();
            
        }
        
    changeB( bValue ) {
            this.currentB = bValue;
            this.bElem = this.currentB;
            this.selectedYearElem = this.currentB;
            this.setSelection();
        }
    
    setSelection() {
        this.selection = this.currentA + this.currentB;
    }
    <button #elem1 value="A1" (click)="changeA(elem1.value)">A1</button>
    <button #elem2 value="A2" (click)="changeA(elem2.value)">A2</button>
    <button #elem3 value="B1" (click)="changeB(elem3.value)">B1</button>
    <button #elem4 value="B2" (click)="changeB(elem4.value)">B2</button>
    
    <p *ngIf="selection == 'A1B1'">Paragraph For A1B1</p>
    <p *ngIf="selection == 'A1B2'">Paragraph For A1B2</p>
    <p *ngIf="selection == 'A2B1'">Paragraph For A2B1</p>
    <p *ngIf="selection == 'A2B2'">Paragraph For A2B2</p>

    您仍然可以在对象中包含段落内容,并使整个结构像地图一样。这样我们就不需要使用多个*ngif和硬编码。如果你喜欢这个解决方案,请告诉我

    更新的工作代码: https://stackblitz.com/edit/ngfor-example-ntnm1x