angular2管道和新数据

angular2管道和新数据,angular,socket.io,Angular,Socket.io,我正在制作一个有角度的管道来处理和过滤原木 我的烟斗看起来像这样 import {Injectable, Pipe,PipeTransform} from '@angular/core'; @Pipe({ name: 'logFilter' }) @Injectable() export class logFilterPipe implements PipeTransform { transform(items: any[], args: any[]): any { //co

我正在制作一个有角度的管道来处理和过滤原木

我的烟斗看起来像这样

import {Injectable, Pipe,PipeTransform} from '@angular/core';

@Pipe({
 name: 'logFilter'
})
@Injectable()
export class logFilterPipe implements PipeTransform {
    transform(items: any[], args: any[]): any {
    //console.log(items);

    if (!args || args.length == 0)
    {
        return items;
    }

    return items.filter(item => item.msg.indexOf(args[0]) !== -1);

 }
}
html部分

 <input type="text" [(ngModel)]="filterLog" class="validate" />

 <ul id="messages">
  <li *ngFor="let msg of messages | logFilter:filterLog"> <div class="chip">{{ msg.user }}</div> {{ msg.msg }}</li>
 </ul>

    {{msg.user}{{msg.msg}}
通过socket.io输入可以添加新消息

this.socket.on('message',函数(message,user) { this.messages.push({user:user,msg:message})

}


如果我键入输入文本,过滤器可以正常工作,但是如果在输入文本之后添加了新消息,则在那里没有显示(例如过滤),我想应该调用一些东西来触发过滤更新?

角度变化检测不检测阵列内的变化,只检测阵列实例的变化(传递不同的阵列实例)

使管道不洁

@Pipe({
 name: 'logFilter',
 pure: false
})
每次对使用管道的组件执行更改检测时,使Angular2执行管道

或者,您也可以在每次修改后使用
this arr=this.arr.splice()
,创建阵列的不同副本,以便Angular通知更改

这取决于用例和数组大小,哪种方法更有效