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] ?