我跟随了“英雄之角2”之旅,目前我正处于这个阶段:
https://angular.io/docs/ts/latest/tutorial/toh-pt6.html
我可以在搜索栏中搜索,并给出一个英雄名字建议列表。
柱塞:https://angular.io/resources/live-examples/toh-6/ts/eplnkr.html
然而,我想要的是一个过滤器条,在那里我搜索,英雄块会根据过滤器栏中的内容自动过滤。
例如,在我提供的链接中,如果我在搜索栏中键入"Bo“,我只希望英雄块"Bombasto”显示在屏幕上。当我清除搜索栏时,所有的块都会重新出现。有人知道怎么做吗?
发布于 2016-12-22 12:37:10
看看我修改过的柱塞:https://plnkr.co/edit/YHzyzm6ZXt4ESr76mNuB?p=preview
Pipe添加到dashboard.component.ts中@Pipe({
name: 'filterHeros'
})
export class FilterHeroPipe {
public transform(heros: Hero[], filter: string) {
if (!heros || !heros.length) return [];
if (!filter) return heros;
return heros.filter(h => h.name.toLowerCase().indexOf(filter.toLowerCase()) >= 0);
}
}Pipe中使用dashboard.template<h3>Top Heroes</h3>
<div class="grid grid-pad">
<a *ngFor="let hero of (heroes | filterHeros : heroSearch.curSearch )" [routerLink]="['/detail', hero.id]" class="col-1-4">
<div class="module hero">
<h4>{{hero.name}}</h4>
</div>
</a>
</div>
<br />
<hero-search #heroSearch></hero-search>HeroSearch组件: private searchTerms = new Subject<string>();
public curSearch: string; // !! NEW !!
constructor(
private heroSearchService: HeroSearchService,
private router: Router) {}
// Push a search term into the observable stream.
search(term: string): void {
this.curSearch = term; // !! NEW !!
this.searchTerms.next(term);
}Pipe添加到app.module中:import { DashboardComponent, FilterHeroPipe } from './dashboard.component';
import { HeroesComponent } from './heroes.component';
import { HeroDetailComponent } from './hero-detail.component';
import { HeroService } from './hero.service';
import { HeroSearchComponent } from './hero-search.component';
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
InMemoryWebApiModule.forRoot(InMemoryDataService),
AppRoutingModule
],
declarations: [
AppComponent,
DashboardComponent,
HeroDetailComponent,
HeroesComponent,
HeroSearchComponent,
FilterHeroPipe
],
providers: [ HeroService ],
bootstrap: [ AppComponent ]
})
export class AppModule { }https://stackoverflow.com/questions/41282926
复制相似问题