Prezados,
Como muitos outros, também tive problema na hora de realizar o desafio. Abaixo deixo uma sugestão dos passos de como implementei a resolução levando em consideração como foi deixado o projeto na aula "Dropdown de origem e destino".
No arquivo dropdown-uf.component.ts:
- Realize as importações abaixo.
import { map, Observable, startWith } from 'rxjs';
Crie uma variável para representar o input do html.
@Input() control!: FormControl;
Altere o tipo de do atributo das opções de
filteredOptions = [];
parafilteredOptions!: Observable<UnidadeFederativa[]>;
.Crie o método abaixo para realizar o filtro dos estados.
private _filter(value: string): UnidadeFederativa[] {
const filterValue = value?.toLowerCase();
return this.unidadesFederativas.filter((estado) =>
estado.nome.toLowerCase().includes(filterValue)
);
}
- No método ngOnInit, após listar as opções de estado, inclua o código abaixo.
this.filteredOptions = this.control.valueChanges.pipe(
startWith(this.control.value),
map((value) => {
return this._filter(value as string);
})
);
No arquivo dropdown-uf.component.html:
- Vincule a variável criada (control) no input do layout html.
2. Devolva o
| async
retirado em aulas anteriores no loop.
- Acrescente o atributo
nome
no objeto que está sendo mostrado.
<mat-option [value]="option.nome">{{ option.nome }}</mat-option>
No arquivo form-busca.component.html:
- Nos campos de origem e Destino acrescenta o input do campo correto.
Obs: Apenas enumerei os passos que realizei para resolver os desafios, há aguns conceitos que não foram abordados que requerem estudos a parte para uma melhor compreensão.