Angular2 - Änderungserkennung wird nur angezeigt, wenn auf @ geklickt wi

Ich habe eine Komponente, in die Sie einige Suchbegriffe eingeben können, und die den Inhalt mithilfe einer * ngFor-Schleife filtert. Wenn ich einen Suchbegriff eingebe, muss ich auf den Bildschirm klicken, damit die Aktualisierung visuell wirksam wird.

Hier ist der Teil des HTML-Codes, in dem die Schleife auftritt:

    <li *ngFor="let item of posts | reverse; let i = index; ">
        <div class="media" *ngIf="item.doesContainTags(searchTags)">

Der Code, der in dem Eingabefeld ausgeführt wird, in dem Sie die zu suchenden Tags eingeben, lautet:

 updateSearchTags() {
    event.stopPropagation();
    // sorter is what is types into the search by tag input field
    this.searchTags = this.sorter.split(',');
 }

Hier ist die statische Funktion für das Post-Objekt:

  doesContainTags(searchTags: strin,g[]): boolean {

    let array = this.tags.split(',');
    if(!array || array.length === 0) {return false;}
    if(!searchTags || searchTags.length === 0) {return false;}

    for(let searchTag of searchTags){
         if(array.indexOf(searchTag) === -1) {

        } else {
        return true;
        }
    }
    return false;
 }

Hier ist der Code, der die Posts abruft, die durchlaufen werden:

            this.postsService.subscribeAllPosts()
            .do(console.log)
            .subscribe( posts => this.posts = posts);

Hier ist der Code im postsService, der den beobachtbaren Wert erhält:

 subscribeAllPosts(): Observable<Post[]> {
    return this.af.database.list('posts')
    .map(Post.fromJsonList);
 }

So alles funktioniert, aber die Änderung wird nur angezeigt, wenn ich auf den Bildschirm klicke. Gibt es eine Möglichkeit, es manuell zum Aktualisieren aufzurufen. Ich dachte, ich könnte dies manuell in der Funktion updateSearchTags aufrufen, die nach der Eingabe der Suche nach eingegebenen Tags aktualisiert wird. Ich bin mir jedoch nicht sicher, welcher Code dies tun würde.

Update, ich habe das Ereignis in ein Tastendruckereignis geändert. Jetzt versuche ich jedoch, dieses Ereignis nach der bidirektionalen Bindung auszulösen, da dies jetzt nur noch vor der Bindung erfolgt. Es wird nur jedes Zeichen angezeigt, nachdem Sie auf das nächste geklickt haben.

Update 2 - Das Keyup-Ereignis wurde gefunden. Ausgestellt sortiert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage