gpt4 book ai didi

使用函数调用多次的 Angular @Input 绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 10:46:23 29 4
gpt4 key购买 nike

我正在使用 Angular 8

我有一个带有一个 @Input() 属性的子组件。此输入必须在绑定(bind)之前修改,因此使用方法返回绑定(bind)数据

<app-child [info]="getInfo()"></app-child>

在父组件中,getInfo() 返回值如下

getInfo(): any|null {
console.log('called...');

if (this.data) {
return JSON.parse(this.data);
}

return null;
}

但是这样一来,每当子组件中发生某些事件时,该方法就会被一次又一次地调用。

Stackblitz 示例:https://stackblitz.com/edit/angular-child-com

生产问题:

表单是从接受来自上述方法的输入的子组件呈现的。

单击任何按钮或输入字段,您可以看到来自每个事件的方法调用的控制台日志打印字符串。

这导致在子组件中多次触发 OnChange 事件。

最佳答案

您应该检索数据并将其存储在父组件的属性中,然后将其传递给与子组件的数据绑定(bind)。 Angular 将负责更改检测

@Component({
selector: 'app-parent',
template: '<app-child [info]="info"></app-child>',
})
export class ParentComponent implements OnInit {
info;

constructor(private service: SomeDataService) {}

ngOnInit() {
this.info = this.service.getData();
}
}

关于使用函数调用多次的 Angular @Input 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59686730/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com