Versão atual:

Utilização do <po-lookup>

Estou tentando utilizar o po-lookup, porém o exemplo que temos no site (https://po-ui.io/documentation/po-lookup) utiliza de uma URL aberta (https://po-sample-api.onrender.com/v1/heroes)

Porem desejo utilizar minha API Advpl, com retorno deste formato:

{
    "CODIGO": 200,
    "INFO": "Retornando dados da consulta",
    "Retorno": {
        "Consulta": [
            {
                "H1_CODIGO": "100101",
                "H1_DESCRI": "40 - PERFILADEIRA PR 200 I"
            },
            {
                "H1_CODIGO": "100102",
                "H1_DESCRI": "50 - PERFILADEIRA PR 200 II"
            },
            ...

Tambem estou utilizando um método para gerenciar as Requisições HTTP

get<T>(endpoint: string, username: string, password: string): Observable<T> {
    const url = this.getFullUrl(endpoint);
    const headers = new HttpHeaders({
      'Authorization': 'Basic ' + btoa(`${username}:${password}`),
    });
    return this.httpClient.get<T>(url, { headers }).pipe(
      tap(response => console.log('Angular GET Response:', response)),
      catchError(error => {
        return EMPTY;
      })
    );
  }

Como não conseguirei utilizar diretamente uma URL, estou tentando chamar uma função no [p-filter-service]

<po-lookup
name="lookup"
class="po-md-3"
p-field-label="label"
p-field-value="value"
[p-filter-service]="getFilteredData.bind(this)"
 p-label="PO Lookup"
></po-lookup>
interface GPTItem {
  H1_CODIGO: string;
  H1_DESCRI: string;
}

getFilteredData() {
    const username = sessionStorage.getItem('username') || '';
    const password = sessionStorage.getItem('password') || '';

    return this.apiService.get('gpt', username, password).pipe(
      map((response: any) => {
        const items = response.Retorno.Consulta.map((item: GPTItem) => ({
          value: item.H1_CODIGO,
          label: item.H1_DESCRI
        }));
        return { items };
      })
    );
  }

Ja tentei utilizar diversos outros formatos neste getFilteredData(), mas não consigo evitar o erro

Type '() => Observable<{ items: any; }>' is not assignable to type 'string | PoLookupFilter'.

Alguem tem algum exemplo de como utilizar o componente com uma função sendo chamada pelo [p-filter-service] ?

Versão (1):

Ver a versão formatada

Utilização do

Comentário

new question