我通过"CreatedDate" timestamp with time zone DEFAULT now()
装饰器从父组件向子组件发送字符串name
。然后将此字符串@Input
作为参数提供给子组件中的函数。
因此每次触发父组件中的事件(例如单击)时,它会导致此name
值发生更改,从而影响子组件中的函数(因为它需要{{1作为一个参数)。这是我孩子组件的一个片段:
name
我现在面临的问题是子视图保留了前一个函数调用的值。随后每次点击父项时,它只会添加新输出,当我希望它删除旧输出并用它替换新输出时。
更新:我找到了解决方案,但我不确定它是否正确。基本上,由于子函数返回一个对象数组,我只是在每个函数调用开始时清空数组。这似乎解决了这个问题。
答案 0 :(得分:3)
ngOnInit只运行一次组件。请改用ngOnChanges。请参阅此处的文档:https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges
Angular会在检测到更改时调用其ngOnChanges()方法 输入组件(或指令)的属性。这个例子 监视OnChanges钩子。
ngOnChanges(changes: SimpleChanges) {
for (let propName in changes) {
let chng = changes[propName];
let cur = JSON.stringify(chng.currentValue);
let prev = JSON.stringify(chng.previousValue);
this.changeLog.push(`${propName}: currentValue = ${cur}, previousValue = ${prev}`);
}
}