加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 手动触发管道更新

发布时间:2020-12-17 10:16:01 所属栏目:安全 来源:网络整理
导读:我已经创建了一个能够使用 *ngFor with objects的管道.但是,当更新对象时,管道不会更新.我通过使用带有pure:false的有状态管道找到了解决方案 here. 对于我的用例,这个解决方案在性能方面是不可接受的,因为它会为每次更改刷新管道(我几乎到处都使用这个管道
我已经创建了一个能够使用 *ngFor with objects的管道.但是,当更新对象时,管道不会更新.我通过使用带有pure:false的有状态管道找到了解决方案 here.

对于我的用例,这个解决方案在性能方面是不可接受的,因为它会为每次更改刷新管道(我几乎到处都使用这个管道来渲染复杂的元素).

有没有办法触发管道的手动刷新,所以它只在我想要时刷新?

这是一个plunker – 要查看问题,请尝试通过单击 – 按钮删除名称.如果你添加pure:false,你会看到它会起作用:

@Pipe({name: 'keys',pure: false})
export class Keys implements PipeTransform {
  transform(value,args:string[]) : any {
    let keys = [];
    for (let key in value) {
      keys.push({key: key,value: value[key]});
    }
    return keys;
  }
}

我想要的是在我的delName()函数中添加一些内容,以便更新管道……

使纯管变得不纯的一种方法是向管道添加参数.

如果要刷新,只需更改参数即可.

没有参数的另一种方式

当输入具有新实例时,Pure Pipe将被触发.因此,对于TypeScript 2.1,下面的代码将使用新实例复制原始对象,并引导纯粹的管道被触发.

let copy = { ...original }

这两种方式都包含在stackbliz demo中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读