Как манипулировать таблицей ngfor, чтобы переключаться между двумя массивами - PullRequest
1 голос
/ 14 октября 2019

Я хотел бы знать, есть ли простой способ парсинга различных массивов в одну таблицу * ngfor. У меня есть следующие коды:

.html

<div class="mb-3">
        <div class="form-check">
            <input class="form-check-input" type="radio" name="date" (click)="valid()" />
            <label class="form-check-label">Valid</label>
        </div>
        <div class="form-check">
            <input class="form-check-input" type="radio" name="date" (click)="invalid()"/>
            <label class="form-check-label">Invalid</label>
        </div>
</div>

<tr *ngFor="let myAccount of Account | filterBy: accountFilter | paginate: { itemsPerPage: count, currentPage: p }; let i = index">
            <td>{{ (p - 1) * count + i + 1 }}</td>
            <td>{{myAccount.name}}</td>
            <td>{{myAccount.startDate}}</td>
            <td>{{myAccount.endDate}}</td>
</tr>

.ts

Account = [];
radioAccount = [];
currentDate = '';

ngOnInit() {
    showAll();
}
showAll() {
       return this.acctService.getAccount().subscribe(data => this.Account = data);
}

valid() {
        this.currentDate = this.datePipe.transform(new Date(),"yyyy-MM-dd");
        this.radioAccount = this.Account.filter(data => {
            return data.startDate < this.currentDate  && data.endDate > this.currentDate});
}

invalid() {
    this.currentDate = this.datePipe.transform(new Date(),"yyyy-MM-dd");
    this.radioAccount = this.Account.filter(data => {
        return data.startDate < this.currentDate  && data.endDate <= this.currentDate});
}

Вы можете видеть, чтоУ меня есть два массива, как я могу отобразить содержимое массива «radioAccount» при нажатии кнопки-переключателя? То есть возможность переключения между контентом «Аккаунт» и контентом «РадиоАккаунт». Я не думаю, что повторение кода * ngfor с * ngif - это решение.

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете создать массив, который не будет фильтроваться, например, AccountSource, а затем вы можете присвоить исходные значения (AccountSource) для Account:

Account = [];
AccountSource= [];

showAll() {
   return this.acctService.getAccount()
       .subscribe(data => {
            this.Account = data;
            this.AccountSource = data;
       });
}

valid() {
        this.currentDate = this.datePipe.transform(new Date(),"yyyy-MM-dd");
        this.Account = this.Account.filter(data => {
            return data.startDate < this.currentDate  && data.endDate > this.currentDate});
}

invalid() {
    this.currentDate = this.datePipe.transform(new Date(),"yyyy-MM-dd");
    this.Account = this.Account.filter(data => {
        return data.startDate < this.currentDate  && data.endDate <= this.currentDate});
}

setSourceData() {
    this.Account = this.AccountSource;
}

и вызвать setSourceData()метод всякий раз, когда вы хотите увидеть исходные значения.

...