You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:09:54