EDIT:
Хорошо, я думаю, что я понял это. This tutorial помог мне, поэтому я бы порекомендовал его прочитать.
Я разделить свой код на компоненты, где
@Component({
directives: [DataCards],
templateUrl: 'build/pages/data-list/data-list.html'
})
export class DataList {
public dataList: Data[];
constructor() {
this.dataList = [
new Data('Test title', 'Test Details 1, 2, 3, 4, 5', false),
new Data('Second title', 'These are the details for my second title :)', false)
];
}
}
и соответствующий HTML
<ion-content class="cards-bg">
<data-cards [data]="dataList"></data-cards>
</ion-content>
содержат мой пользовательский компонент data-cards
. data-cards
имеет входной параметр data
, через который передается список данных. Чтобы иметь возможность использовать компонент data-cards
, вам необходимо установить атрибут directives
. Data
- это класс, содержащий все, что вам нужно, в элементе вашего списка.
export class Data {
constructor(public title: string, public details: string, public showDetails: boolean) {}
}
Компонент data-cards
сам по себе имеет селектор входов и атрибуты набора, поэтому компонент может быть использован из data-list
HTML. Функция toggleDetails
используется для переключения, отображается ли деталь детали записи списка.
@Component({
selector: 'data-cards',
inputs: ['data'],
templateUrl: 'build/pages/data-cards/data-cards.html'
})
export class DataCards {
public data: Data[];
constructor() {}
toggleDetails(data: Data) {
if (data.showDetails) {
data.showDetails = false;
} else {
data.showDetails = true;
}
}
}
Наконец, в файле data-cards
шаблона, я создать список данных, используя *ngFor
и сделать детали видимость <div>
элемента зависит от данных showDetails
атрибута с *ngIf
.
<ion-card *ngFor="let d of data">
<h1>{{d.title}}</h1>
<button (click)="toggleDetails(d)">+</button>
<div *ngIf="d.showDetails">{{d.details}}</div>
</ion-card>
Чтобы получить все на работу, вам нужно будет добавить импорт в мой код, так как, например, класс DataList
зависит от DataCards
и Data
.
Я также рекомендую изменение стиля data-cards
шаблона ... Без стиль, это не выглядит красиво точно :)
НЕОТРЕДАКТИРОВАННЫЙ ОРИГИНАЛЬНЫЙ ОТВЕТ:
Я работаю над чем-то похоже прямо сейчас. Я думаю, что это можно реализовать, используя карты и *ngIf
.
Так что я думаю, что я буду делать что-то вроде
<ion-card>
<h2>Card Title</h2>
<button (click)="toggleDetails()">+</button>
<div *ngIf="showDetails">
Here are some details for the title.
</div>
</ion-card>
В toggleDetails()
я бы установить переменную showDetails
истина ...
Это только мой подход (и непроверенный), я собираюсь отредактировать свой ответ, когда я закончил его реализацию.
Не могли бы вы поделиться с нами тем, что вы пробовали до сих пор? – sebaferreras
Я хочу создать список аккордеона, подобный этому [screenshot] (https://s31.postimg.org/jzd2yzp7f/accordion.jpg) – mahmoudismail