如何在用户开始输入时更改搜索图标 Angular

How to change search icon when user start typing in Angular

我的资产文件夹中有 2 个 SVG 图标,我的 HTML 中有一个用户输入框。我希望第一个图标显示为默认图标,但是每当用户开始在文本框中键入内容时,我希望显示第二个图标。我很难实现它。

有相同的搜索图标,但第一个图标是纯白色,第二个图标是蓝绿色。

The default icon = search-magnifying-glass-icon.

Change this when user start typing = search-magnifying-glass-teal-icon.

我不确定是否可以直接更改 SVG 图标的描边颜色而不是在资产文件夹中有两个图标,但这是现在的代码。

HTML

        <mat-form-field appearance="fill" style="width: 380px;" >
           <input matInput [formControl]="inputCtrl" [(ngModel)]="searchText" (ngModelChange)="searchTextChanged($event)"
            placeholder="Search" class="input">
           <div class="icon"><img src="../../assets//images/icons/search-magnifying-glass-icon.svg"></div>
        </mat-form-field>  

一些TS

  ngOnInit(): void {
    this._filterTags();

    this.inputCtrl.valueChanges
      .pipe(takeUntil(this.death$))
      .subscribe((value: string) => {
        this._filterTags(value);
        this.updateQuery(value);
        if(value == ''){
          this.showColumn = false;

        }else{
          this.showColumn = true;
        }
      });

在 html 中,您更改图标元素以获取参数

 <div class="icon"><img [src]="icon"></div>

然后在组件中创建图标变量

icon="../../assets/images/icons/search-magnifying-glass-icon.svg"

然后在你的代码中

 this.inputCtrl.valueChanges
      .pipe(takeUntil(this.death$))
      .subscribe((value: string) => {
        this._filterTags(value);
        this.updateQuery(value);
        if(value == ''){
          this.showColumn = false;
          this.icon="../../assets/images/icons/search-magnifying-glass-icon.svg"
        }else{
          this.showColumn = true;
          this.icon="../../assets/images/icons/search-magnifying-glass-teal-icon"
        }
      });