Машинопись — поиск записей по свойствам?

#angular #typescript

Вопрос:

В моем проекте Angular я хочу искать клиентов по свойствам, например по имени. В своем сервисе я создал метод, который возвращает http-ответ, но, конечно, он работает только в том случае, если пользователь вводит полное правильное имя. Есть ли возможность получить URL-адреса, содержащие то, что предоставляет пользователь? А также как настроить этот метод для поиска по определенному свойству в зависимости от того, какое поле выбирает пользователь (имя, адрес и т.д.)?

клиент.сервис.ts

 import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
export class ClientService {

  constructor(private http: HttpClient) { }

const baseUrl = 'http://localhost:3000/clients';
  findByName(value: any): Observable<any> {
    return this.http.get(`${baseUrl}?name=${value}`);
  }
}
 

клиенты-список.компонент.ts

 import { Component, OnInit } from '@angular/core';
import { ClientService } from 'src/app/services/client.service';
import { Router } from '@angular/router';

@Component({
  selector: 'app-clients-list',
  templateUrl: './clients-list.component.html',
  styleUrls: ['./clients-list.component.css']
})
export class ClientsListComponent implements OnInit {
    clients: any;
    name = '';
constructor(private clientService: ClientService,
    private router: Router) {

    }
 ngOnInit(): void {
    this.retrieveClients();
  }

  retrieveClients(): void {
    this.clientService.getAll()
      .subscribe(
        data => {
          this.clients = data;
          console.log(data);

        },
        error => {
          console.log(error);
        });
  }
searchName(): void {
    this.clientService.findByName(this.name)
      .subscribe(
        data => {
          this.clients = data;
          console.log(data);
        },
        error => {
          console.log(error);
        });
  }
}
 

и мой html:

 <input type="text" name="name" placeholder="Search..." [(ngModel)]="name">
<button type="button" (click)="searchName()">Search</button>