如何逐行显示 div - 模板 Angular
How to show div line by line - template Angular
我有一个显示行的 angular 模板。我添加了一个按钮来显示当前行的一些信息。问题是:当我点击第 1 行按钮时,信息显示在所有行上。
我在这里放了一小段重现我的问题的代码
https://stackblitz.com/edit/angular-nmhrty
提前致谢!
不知怎么的,你需要控制你点击了哪个按钮,我把这些信息放在de数组中,希望对你有所帮助:
https://stackblitz.com/edit/angular-bawglg?file=src/app/app.component.ts
试试这个:
<div *ngFor="let test of items; index as i" >
<div class="resultRow newRow" [class.resultRow-mobile]="mobileMode">
<div *ngIf="!mobileMode" class="expandThis">
<span (click)="toggleDocuments(i)">CLICK</span>
</div>
<ng-container *ngIf="visibleDocuments[i]">
<p>OK</p>
</ng-container>
</div>
</div>
组件
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
show:boolean = false;
items:any[] = ['1', '2'];
visibleDocuments = new Array(this.items.length);
toggleDocuments(index){
this.visibleDocuments[index] = !this.visibleDocuments[index];
}
}
我分叉了你的代码片段并用我认为你正在寻找的内容更新了它:
https://stackblitz.com/edit/angular-gt3jmk
我建议您在要显示的每个项目中存储显示/不显示的状态。这样,您可以单独切换每个的可见性。您可以通过在每个项目及其数据之外添加 show
属性 来实现此目的。
这是一个解决方案示例:
组件:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
item1: {info: string, show: boolean} = {info:'item 1 - info', show: false};
item2: {info: string, show: boolean} = {info:'item 2 -info', show: false};
items = [this.item1, this.item2];
toggleDocuments(item: {info: string, show: boolean}){
item.show = ! item.show;
}
}
模板:
<div *ngFor="let test of items" >
<div class="resultRow newRow" [class.resultRow-mobile]="mobileMode">
<div *ngIf="!mobileMode" class="expandThis">
<span (click)="toggleDocuments(test)">CLICK</span>
</div>
<ng-container *ngIf="test.show">
<p>{{test.info}}</p>
</ng-container>
</div>
</div>
我有一个显示行的 angular 模板。我添加了一个按钮来显示当前行的一些信息。问题是:当我点击第 1 行按钮时,信息显示在所有行上。
我在这里放了一小段重现我的问题的代码
https://stackblitz.com/edit/angular-nmhrty
提前致谢!
不知怎么的,你需要控制你点击了哪个按钮,我把这些信息放在de数组中,希望对你有所帮助:
https://stackblitz.com/edit/angular-bawglg?file=src/app/app.component.ts
试试这个:
<div *ngFor="let test of items; index as i" >
<div class="resultRow newRow" [class.resultRow-mobile]="mobileMode">
<div *ngIf="!mobileMode" class="expandThis">
<span (click)="toggleDocuments(i)">CLICK</span>
</div>
<ng-container *ngIf="visibleDocuments[i]">
<p>OK</p>
</ng-container>
</div>
</div>
组件
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
show:boolean = false;
items:any[] = ['1', '2'];
visibleDocuments = new Array(this.items.length);
toggleDocuments(index){
this.visibleDocuments[index] = !this.visibleDocuments[index];
}
}
我分叉了你的代码片段并用我认为你正在寻找的内容更新了它:
https://stackblitz.com/edit/angular-gt3jmk
我建议您在要显示的每个项目中存储显示/不显示的状态。这样,您可以单独切换每个的可见性。您可以通过在每个项目及其数据之外添加 show
属性 来实现此目的。
这是一个解决方案示例:
组件:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
item1: {info: string, show: boolean} = {info:'item 1 - info', show: false};
item2: {info: string, show: boolean} = {info:'item 2 -info', show: false};
items = [this.item1, this.item2];
toggleDocuments(item: {info: string, show: boolean}){
item.show = ! item.show;
}
}
模板:
<div *ngFor="let test of items" >
<div class="resultRow newRow" [class.resultRow-mobile]="mobileMode">
<div *ngIf="!mobileMode" class="expandThis">
<span (click)="toggleDocuments(test)">CLICK</span>
</div>
<ng-container *ngIf="test.show">
<p>{{test.info}}</p>
</ng-container>
</div>
</div>