Eu me deparei com o componente typeahead do ng-bootstrap e estou tendo dificuldade para entende-lo. Esse é o código que eu tenho:
Template
<input type="text" formControlName="idFncmt" (selectItem)="setFncmt($event, i)" [inputFormatter]="formatter" [ngbTypeahead]="search" [resultTemplate]="autoTemplate">
<ng-template #autoTemplate let-r="result">
<option>{{r.nome}}</option>
</ng-template>
Typescript
private listaAuto: Array<any>= [
{
id: 2,
nome: "Trabalho"
}
];
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.map(term => term === '' ? []
: this.listaAuto.filter(v => v.nome.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10));
formatter= (value: any) => value.id ? value.nome : value;
Eu tenho as seguntes dúvidas:
1: Como o ng-template está pegando os dados da lista e autocomplete listaAuto sem algum binding direto?
2: Como funciona o search e o formatter? Eu sei que eles pegam e formatam os dados do input mas queria saber como
3: O que é o let-r="result"?