【发布时间】:2019-06-06 14:32:58
【问题描述】:
我有两个相互通信的组件,一个常规组件(父)和一个引导模式组件(子)。 父母和孩子都有一个记录表。在父表中,每条记录都有一个复选框。当我选择一个或多个复选框并单击一个按钮时,会触发一个尝试填充子表的事件。
孩子的表被填充,我可以从中删除我希望的记录。如果我删除一些记录,关闭模式(关闭子)并决定再次从父级向子级发送相同的数据,则不会触发Input 事件。但是,如果我选择检查父项中的不同记录并将它们传递给子项,则会正确触发 Input 事件。
这是我所拥有的:
ParentComponent.component.html
<child-component #createNewProductRequestModal [data]="newProductRequest"></m-child-component>
ParentComponent.component.ts
private onNewProductRequest(toSend){
this.newProductRequest = toSend;
$('#createNewProductRequestModal').appendTo("body").modal('toggle');
}
ChildComponent.component.ts
@Input('data')
set data(data: any) {
if (data !== undefined || data !== "") {
this.products = data;
console.log("data");
}
}
constructor() { }
ngOnInit() { }
为了在渲染子表之前测试数据是否更改,我将父级传递的数据记录到控制台。使用此代码,每次我在不更改 toSend 变量的情况下执行父级的 onNewProductRequest(toSend) 时,子级的模态渲染但不执行 Input 事件,因此不会更改数据。
【问题讨论】:
标签: javascript angular