Angular拆分组件后SearchPipe搜索功能失效问题求助
解决Angular拆分组件后搜索功能失效的问题
问题核心是拆分组件后,父子组件间的数据传递未正确实现:SearchBar组件的输入文本没能同步到父组件,DisplayContent组件也没拿到实时的searchText和words数据,导致过滤逻辑无法生效。以下是完整修复步骤:
1. 修改SearchBar组件
search-bar.component.ts
import { Component, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'app-search-bar', templateUrl: './search-bar.component.html', styleUrls: ['./search-bar.component.css'] }) export class SearchBarComponent { @Output() searchTextChanged = new EventEmitter<string>(); searchText = ''; onSearchTextChange() { this.searchTextChanged.emit(this.searchText); } }
search-bar.component.html
<input type="text" class="form-control" placeholder="Search" [(ngModel)]="searchText" (ngModelChange)="onSearchTextChange()">
2. 修改DisplayContent组件
display-content.component.ts
import { Component, Input } from '@angular/core'; @Component({ selector: 'app-display-content', templateUrl: './display-content.component.html', styleUrls: ['./display-content.component.css'] }) export class DisplayContentComponent { @Input() words: any[] = []; @Input() searchText = ''; }
display-content.component.html
<div *ngFor="let e of words | search: searchText"> <p>{{ e.word }}</p> <ol> <li *ngFor="let meaning of e.meanings">{{ meaning }}</li> </ol> </div>
3. 修改AppComponent模板
app.component.html
<div class="container mt-5"> <app-search-bar (searchTextChanged)="searchText=$event"></app-search-bar> <app-display-content [words]="words" [searchText]="searchText"></app-display-content> </div>
验证说明
SearchPipe无需修改,其过滤逻辑本身正常- 组件拆分后,通过
@Input实现父向子的数据传递,@Output实现子向父的事件通知,确保searchText的变化能实时同步到DisplayContent组件,让搜索管道正常执行过滤逻辑
内容的提问来源于stack exchange,提问作者Jaiylon
相关产品推荐
相关产品推荐

