Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在子组件中将父组件值作为参数传递_Angular_Decorator - Fatal编程技术网

Angular 在子组件中将父组件值作为参数传递

Angular 在子组件中将父组件值作为参数传递,angular,decorator,Angular,Decorator,我正在通过@Input装饰器将一个字符串name从父组件发送到子组件。然后,该字符串name作为参数输入子组件中的函数 因此,每次触发父组件中的事件(例如单击)时,都会导致该name值发生更改,进而影响子组件中的函数(因为它将name作为参数)。这是my child组件的一个片段: @Input() name: string; ngOnChanges() { this.childFunction(this.name); } 我现在面临的问题是,子视图保留了前一个函数调用的值。当我希望它删

我正在通过
@Input
装饰器将一个字符串
name
从父组件发送到子组件。然后,该字符串
name
作为参数输入子组件中的函数

因此,每次触发父组件中的事件(例如单击)时,都会导致该
name
值发生更改,进而影响子组件中的函数(因为它将
name
作为参数)。这是my child组件的一个片段:

@Input() name: string;

ngOnChanges() {
  this.childFunction(this.name);
}
我现在面临的问题是,子视图保留了前一个函数调用的值。当我希望它删除旧的输出并用它替换新的输出时,每次在父级中单击后,它都会添加新的输出


更新:我已经找到了一个解决方案,但我不确定它是否正确。基本上,由于子函数返回一个对象数组,我只是在每次函数调用开始时清空数组。这似乎解决了这个问题。

ngOnInit对一个组件只运行一次。改用ngOnChanges。请参见此处的文档:

Angular在检测到更改时调用其ngOnChanges()方法 组件(或指令)的输入属性。这个例子 监视OnChanges钩子


ngOnInit对于一个组件只运行一次。改用ngOnChanges。请参见此处的文档:

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}`);
  }
}