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通知更改
这取决于用例和数组大小,哪种方法更有效