Warm tip: This article is reproduced from serverfault.com, please click

其他-自定义 Angular 的阿尔及利亚搜索框

(其他 - Customize algolia's search box in angular)

发布于 2020-11-17 14:56:25

我正在用 Angular 的阿尔戈利亚。
有一个我要自定义的搜索框。
到目前为止,这是我所做的。
.html文件-

<ais-instantsearch [config]="productsConfig">
    <ais-search-box></ais-search-box>
    <ais-hits>
    </ais-hits>
<ng-template let-hits="hits">    

.ts文件

import { Component, OnInit } from '@angular/core';
import { OwlOptions } from 'ngx-owl-carousel-o';
import algoliasearch from 'algoliasearch/lite';
import { environment } from 'src/environments/environment';

const searchClient = algoliasearch(
  environment.algolia_application_id,
  environment.algolia_search_api_key
);

@Component({
  selector: 'app-products',
  templateUrl: './products.component.html',
  styleUrls: ['./products.component.scss']
})

export class ProductsComponent implements OnInit {

  constructor() { }

  productsConfig = {
      indexName: 'products',
      searchClient
  };

  ngOnInit(): void {
  }
}    

我无法自定义搜索框。
如何自定义 Angular 的阿尔及利亚搜索框?
任何帮助,将不胜感激。
谢谢

Questioner
bdb
Viewed
12
bdb 2020-11-28 14:32:44

我无法自定义搜索框,所以我尝试了不同的方法。
组件文件-

  getProductList(){
      var parameters = {
        query : '',
        hitsPerPage : 1,
        filters: `doctorId = ${this.doctorId}`
      };
      this.algoliaService.getData('products', parameters)
        .then(data => {
          if( data.hits.length > 0 )
          {
            this.doctorDetails = data.hits[0];
          }       
      })
  }    

服务文件-

getData(indexName, parameters) : any {
  const index = searchClient.initIndex(indexName);
  return index.search(parameters);
}    

这样,你可以从组件文件中获取数据,因此无需自定义搜索。只需在参数中传递你的搜索框值即可。