如何在Angular -2/4中删除双向数据绑定

Sri*_*man 8 javascript filter angular

我正在开发Angular中的Multi Select下拉列表,它也有搜索功能.那时我正在通过我的主数据解析输入字段给出的输入,并且只显示DOM中的过滤内容.这是我的功能:

modifyFilter(value: any) {
        console.log('value', value); //The value passed from DOM
        this.filterContent = this.catalogManufacturerNames; /******/
        for(let i=0; i<this.catalogManufacturerNames.length;i++) {
         /* Search catalogManufacturerNames for the value and splice all
         filterContent not having the matching value */    
        }
    }
Run Code Online (Sandbox Code Playgroud)

代码的问题在于,每次modifyFilter调用该方法时,catalogManufacturerNames它也会随之改变filterContent.因此,每当我打电话时modifyFilter,标记为/******/的行filterContent被分配给前一个而filterContent不是全局,并且可能没有变化catalogManufacturerNames.我认为问题是filterContent并且catalogManufacturerNames得到双向绑定,但我不知道如何根据我的要求修改它.或者还有其他方法可以解决这个问题.欢迎提出建议.

San*_*per 15

在这种情况下,您必须使用Object.assign.它将创建对象/变量的副本,因此当您对主对象执行任何过滤时,它将不会反映在复制的对象中,反之亦然.

您可以{},[]根据您的要求使用.

{}:用于单个对象

[]:用于收集对象

let copiedItem = Object.assign({}, copiedItem , PrimaryItem );
Run Code Online (Sandbox Code Playgroud)

请参阅详细信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign