Joh*_*abb 3 javascript angular
当我向数组添加项目时,ngOnChange 被触发:
\n\nthis.entries = [{"name": "John"},{"name": "Alex"},{"name": "Joe"}]\nRun Code Online (Sandbox Code Playgroud)\n\n但当我删除这样的项目时不会被触发:
\n\nthis.entries.splice(this.entries.findIndex(x => x.name === "Joe"), 1);\nRun Code Online (Sandbox Code Playgroud)\n\n该项目确实被删除,因为数组大小发生了更改。
\n\nComponent code:\n@Component({\n selector: \xe2\x80\x98app-component\xe2\x80\x99,\n \xe2\x80\xa6\n})\n\nexport class InputComponent {\n @Input() entries:any=[];\n\n ngOnChanges() {\n console.log(this.entries);\n }\n}\n\nHTML:\n<app-component [entries] = "entries"></app-component>\n\nUpdate function:\nremoveEntry(key:string) {\n this.entries.splice(this.entries.findIndex(x => x.name === key), 1);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我如何解决它?
\n您可以使用过滤器代替拼接:
removeEntry(key:string) {
this.entries = this.entries.filter(x => x.name !== key);
}
Run Code Online (Sandbox Code Playgroud)
为了完整起见,必须重新分配变量的原因是 filter 方法不会修改现有数组,而是返回一个包含过滤后元素的新数组。
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |