这里只是一个简单的问题。我仍然是 angular 的新手,所以请。是的,我的视图页面看起来像这样。
最初,我正在使用所有必需的数据加载我的页面。现在,这里的问题是,当用户单击"OWNERS" 中的任何名称时,数据应该能够根据"user-click"进行过滤。例如,如果用户点击“Krishna”,所有与“Krishna”相关联的活动都应该被过滤,并且应该能够显示在同一页面中。
我的 home.component.ts 页面看起来像这样。
import { CampaignService } from './../../../services/campaign.service';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
constructor(private campaignService : CampaignService ) { }
Time;
campaigns;
ngOnInit(){
setInterval(() => {
this.Time = Date.now()
}, 1000);
this.campaignService.CampaignsInfo()
.subscribe(response=>{
this.campaigns = response;
});
}
}
我的 home.component.html 看起来像这样:
<campaign-header></campaign-header>
<div class="container-fluid date-time sticky-top">
<div class="container">
<form class="form-inline my-2 my-lg-0 d-flex justify-content-center radio" >
<div class="" >
<input type="radio" checked name="day"> Today
</div>
<div class="float-left">
<input type="radio" name="day"> Commulative
</div>
<!-- <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>-->
</form>
<div class="d-flex justify-content-end" style="margin-top: -16px;">
<span id="date_time"><i class="zmdi zmdi-calendar-check zmdi-hc-fw"></i> {{Time | date}} <i class="zmdi zmdi-time zmdi-hc-fw"></i> {{ Time | date:'mediumTime' }} </span>
</div>
</div>
</div>
<br>
<!-- content -->
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="card campaign border-top wrap">
<div class="card-body table-responsive">
<table class="table table-hover mb-0">
<thead>
<tr>
<th class="border-top-0">CAMPAIGN </th>
<th class="border-top-0">STATUS</th>
<th class="border-top-0">DIALED</th>
<th class="border-top-0">OWNERS</th>
<th class="border-top-0"> <span class="invisible">Action</span></th>
<!-- <button mat-button color="primary" routerLink="/campaign-details">CampaignDetails</button> -->
</tr>
</thead>
<tbody>
<tr *ngFor="let campaign of campaigns?.result">
<td><p>{{campaign.CampaignName}}</p>
<small>{{campaign.DepartmentName}}</small>
</td>
<td>
<small class="text-info">Active</small>
</td>
<td>
<p>{{campaign.Dialed}} / <small>1500000</small></p>
<div class="progress mt-2 w-75">
<div class="progress-bar bg-info" role="progressbar" style="width: 90%;" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</td>
<td>
<button class="badge badge-pill badge-secondary" > {{ campaign.owners }} </button>
</td>
<td class="ml-0 pl-0"><a routerLink="/campaign-details"><img src="../../assets/Images/next.png" class="next" /></a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<br>
</div>
我尝试为按钮编写 (click) ="someMethod(campaign.Name)" 并传递活动对象并尝试在 component.ts 页面中应用过滤器,但没有运气。任何帮助深表感谢。非常感谢提前。
PS:这是经过一些研究并在实施以下建议之后。
我尝试实现自定义管道,但是在所有者上单击事件后,出现以下错误。
我的烟斗看起来像这样。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(values: any[], key: string, value: string): any[] {
if (!values) {
return [];
}
if (!value) {
return values;
}
return values.filter(val =>{
debugger;
console.log(values);
return val.includes(values);
});
}
}
我的点击事件和 html 如下所示:
filterByOwnr(val) {
this.filter = val;
}
<tr *ngFor="let campaign of campaigns?.result | filter : 'OWNERS' : filter;">
<td>
<button class="badge badge-pill badge-secondary" (click)="filterByOwnr(campaign.owner)"> {{ campaign.owner}} </button>
</td>
</tr>
在您的自定义管道实现中,不应该是这一行:
return val.includes(values);
反而是这个?
return val.CampaignName.includes(value);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句