Ich versuche, typeahead.js mit Angular 2 zu verwenden (um die Bloodhound-Funktion zu nutzen, da sie die beste ist). Allerdings habe ich Schwierigkeiten, die js-Datei in das Projekt zu importieren.Verwenden von typeahead.js mit Angular 2
Ich habe im Anschluss an die in der index.html:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
und die typeahead-Dateien:
<script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.11.1/typeahead.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.1.1/bloodhound.min.js"></script>
Ich habe auch die jQuery importiert wie folgt in der systemjs.config:
..
map: {
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js',
}..
Und ich habe die jQuery in der ngAfterViewInit Methode:
ngAfterViewInit() {
console.log("jQuery is ready");
// constructs the suggestion engine
var states = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
// `states` is an array of state names defined in "The Basics"
local: states
});
$('#bloodhound .typeahead').typeahead({
hint: true,
highlight: true,
minLength: 1
},
{
name: 'states',
source: states
});
}
Die jQuery funktioniert (bestätigt durch den Konsolenprotokolleintrag). Jedoch habe ich die folgende Fehlermeldung erhalten:
jQuery.Deferred exception: $(...).typeahead is not a function TypeError: $(...).typeahead is not a function
und
ERROR TypeError: $(...).typeahead is not a function
Versuchen ohne die $ (document) .ready und direkt in ngAfterViewInit statt? (Das wird ausgelöst, nachdem das Dokument fertig ist, also macht es keinen Sinn, dem document.ready -Ereignis hinzuzufügen) –
Ich habe das document.ready -Ereignis entfernt, aber ich bekomme immer noch den gleichen Fehler: ERROR Fehler: Uncaught (in Versprechung): TypeError: $ (...). Typeahead ist keine Funktion – user3565164
Dieses plunk bekommt den Fehler nicht - und es hat Ihren Code in ngAfterViewInit: https://plnkr.co/edit/Xvm0zwut4on8n6LNJVHL?p=preview Siehe auch in index.html - hast du dein typeahead Skript-Tag vor den eckigen Skripten hinzugefügt? –