import { Component, EventEmitter, Input, Output, QueryList, ViewChild } from "@angular/core"; import { FormGroup } from "@angular/forms"; import { AutoComplete } from "primeng/primeng"; import { DynamicFormControlCustomEvent, DynamicFormLayout, DynamicFormLayoutService, DynamicFormValidationService, DynamicInputModel, DynamicTemplateDirective } from "@ng-dynamic-forms/core"; import { PRIME_NG_TEMPLATE_DIRECTIVES } from "../dynamic-primeng-form.const"; import { DynamicPrimeNGTemplateableFormControlComponent } from "../dynamic-primeng-templateable-form-control.component"; @Component({ selector: "dynamic-primeng-autocomplete", templateUrl: "./dynamic-primeng-autocomplete.component.html" }) export class DynamicPrimeNGAutoCompleteComponent extends DynamicPrimeNGTemplateableFormControlComponent { private _suggestions: string[]; readonly templateDirectives = PRIME_NG_TEMPLATE_DIRECTIVES; @Input() group: FormGroup; @Input() layout: DynamicFormLayout; @Input() model: DynamicInputModel; @Input() templates: QueryList | DynamicTemplateDirective[] | undefined; @Output() blur: EventEmitter = new EventEmitter(); @Output() change: EventEmitter = new EventEmitter(); @Output() customEvent: EventEmitter = new EventEmitter(); @Output() focus: EventEmitter = new EventEmitter(); @ViewChild("pAutoComplete", { static: true }) pAutoComplete: AutoComplete; constructor(protected layoutService: DynamicFormLayoutService, protected validationService: DynamicFormValidationService) { super(layoutService, validationService); } get suggestions(): string[] { return this._suggestions; } get viewChild(): AutoComplete { return this.pAutoComplete; } onAutoComplete(_$event: any): void { if (Array.isArray(this.model.list)) { this._suggestions = this.model.list.map(item => item); } } }