algolia / angular-instantsearch

⚡️Lightning-fast search for Angular apps, by Algolia

Home Page:https://algolia.com/doc/deprecated/instantsearch/angular/v4/api-reference/instantsearch/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ais-configure : Type '{ hitsPerPage: number; }' is not assignable to type 'PlainSearchParameters'.

johnico opened this issue · comments

version : 4.14 on angular 14.5

i have tried to set hitsForPage in order to support pagination
so i bring the NgAisConfigureModule

and added :

  <ais-instantsearch [config]="searchConfig">
    <ais-configure
    [searchParameters]="{ hitsPerPage: 5, enablePersonalization: true }"
  ></ais-configure>
  ...
  ...

I got the following error on "hitsPerPage"

{ hitsPerPage: number; enablePersonalization: true; }' is not assignable to type 'PlainSearchParameters'.
  Object literal may only specify known properties, and '"hitsPerPage"' does not exist in type 'PlainSearchParameters'.

is here any way to define the items per page ?

Hi @johnico, thank you for raising the issue.

I cannot reproduce it on my end so there's probably information I'm missing.
Could you either provide a codesandbox showcasing it or sending me the output of the following command :

npm list algoliasearch algoliasearch-helper

Thank you !

Hi @johnico, thank you for raising the issue.

I cannot reproduce it on my end so there's probably information I'm missing. Could you either provide a codesandbox showcasing it or sending me the output of the following command :

npm list algoliasearch algoliasearch-helper

Thank you !

@aymeric-giraudet thanks

i can put diffrent params than hitsPerPage without typing issue but nothing happen

├── algoliasearch@4.14.2 
└─┬ angular-instantsearch@4.3.0
  └─┬ instantsearch.js@4.46.1
    └── algoliasearch-helper@3.11.1 

code : module

@NgModule({
  declarations: [TestComponent],
  imports: [ NgAisModule.forRoot()],
})
export class TestModule {}

Component.ts

import { Component, OnInit } from '@angular/core';
import algoliasearch, { SearchClient } from 'algoliasearch/lite';

@Component({
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.scss'],
})
export class TestComponent implements OnInit {
  config?: { indexName: string; searchClient: SearchClient, routing: true };

  constructor() {
    const data: Algolia.SearchApiKeyOnCallData = { global: true };
    const dataAlgolia = someCallToget search data
    dataAlgolia(data)
      .toPromise()
      .then((key: string) => {
        const searchClient = algoliasearch('string', key);
        this.config = {
          indexName: `test`,
          searchClient,
          routing: true
        };
      });
  }

html

  <ais-instantsearch [config]="config">
    <ais-configure 
    [searchParameters]="{hitsPerPage:2}"
  ></ais-configure>
  ...
  ...
  ...
  ..
</ais-instantsearch>

Thanks @johnico for the info !

I have the same version but no such issue, if I create an object with the same type used by Configure it's fine :

import { PlainSearchParameters } from 'algoliasearch-helper';
import { SearchOptions } from 'instantsearch.js';

const test: PlainSearchParameters = { hitsPerPage: 10 };
const test2: SearchOptions = { hitsPerPage: 10 };

Could you try that, check the definitions for PlainSearchParameters and SearchOptions by yourself and see if there's anything strange ?
Could also be a problem with TypeScript itself, which version are you running ? You could also maybe try to delete node_modules and reinstall.

@aymeric-giraudet I have added any to the object and it works now
Might be typescript issues ?

Also tried to remove node modules .

I see the object in the node modules code .
So I suspect the typescript version

I have typescript 4.7.4