Das Element ng-bootstrap typeahead ermöglicht das Abrufen eines Arrays von Objektvorschlägen und die Auswahl eines solchen, sodass das Modell zum ausgewählten Objekt wird.Wie kann ich mit typeahead Objekte holen/präsentieren, aber aufnehmen und mit Strings antworten?
The full code can be seen in this Plunkr. Testen Sie es, indem Sie nach einem US-Bundesstaat suchen und dann den model
-Ausgang beobachten. Hier
ist die Vorlage:
<label for="typeahead-template">Search for a state:</label>
<input id="typeahead-template" type="text" class="form-control" [(ngModel)]="model" [ngbTypeahead]="search" [resultTemplate]="rt"
[inputFormatter]="formatter" />
<hr>
<pre>Model: {{ model | json }}</pre>
Wenn Sie für "Alabama" suchen das Modell nicht Alabama werden, sondern
{
"name": "Alabama",
"flag": "5/5c/Flag_of_Alabama.svg/45px-Flag_of_Alabama.svg.png"
}
In meiner Situation, würde Ich mag das Modell erhalten als Alabama
. Ich möchte das Bild und andere Daten nicht in meinem Formular an den Server senden.
Ich habe versucht, das (selectItem)
Ereignis von ng-Bootstrap zur Verfügung gestellt, und den Wert manuell darin ändern, aber das funktioniert nicht. Das Modell bleibt gleich - ein Objekt und keine Schnur !.
heißt
selectItem(e: NgbTypeaheadSelectItemEvent, fubi: any){
console.log("e.item.name", e.item.name);
this.addressForm.patchValue({
statename: e.item.name
});
}
statename
Unterkunft Meine Form ist nicht aktualisiert, wenn auf diese Weise genannt
Irgendwelche Ideen, warum nicht? Ich habe alle offensichtlichen versucht, glaube ich
Könnten Sie Ihren Plunkr vielleicht so ändern, dass er zeigt, was Sie mit Ihrer FormGroup und FormControl zu tun versuchen? Ich kann nicht sagen, was Sie zu tun versuchen ... Vom ersten Blick an dachte ich, Sie hätten eine Funktion erstellt - sie selectItem nennen -, statt die Funktion wie gewünscht zu benennen und im Attribut (selectItem) darauf Bezug zu nehmen auf Ihrem Eingabe-Tag. – Nokes
Vergiss meinen letzten Kommentar. Ich habe es funktioniert. Problem war, dass ich 'inputFormatter' versehentlich entfernt hatte – CodyBugstein
Großartig! Froh es zu wissen. – Nokes