Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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
Angular6-数组中的组件未更新_Angular - Fatal编程技术网

Angular6-数组中的组件未更新

Angular6-数组中的组件未更新,angular,Angular,下面是显示错误的代码: 我正在尝试动态更新总量字段。我创建了一个Quantity组件,它是一个输入,接收一个数字并存储该数字。在我的应用程序组件中,我有一个数量组件数组。当我从应用程序组件尝试QuantityComponent.getQuantity()时,它总是返回0,即使我知道我正确设置了组件数量,因为组件数量正确显示 我假设这是因为数组中的QuantityComponent没有被更新。我的假设正确吗?您将如何编写此代码?这是因为您正在您的服务中创建新的数量对象。在应用程序视图中,您正在启

下面是显示错误的代码:

我正在尝试动态更新总量字段。我创建了一个Quantity组件,它是一个输入,接收一个数字并存储该数字。在我的应用程序组件中,我有一个数量组件数组。当我从应用程序组件尝试QuantityComponent.getQuantity()时,它总是返回0,即使我知道我正确设置了组件数量,因为组件数量正确显示


我假设这是因为数组中的QuantityComponent没有被更新。我的假设正确吗?您将如何编写此代码?

这是因为您正在您的服务中创建新的
数量对象。在应用程序视图中,您正在启动另外两个独立的quantity实例。每当您使用组件选择器时(就像您在应用程序组件html中所做的那样),angular都会实例化该组件。我已经解决了这个问题


但是您可以通过使用EventEmitter来增强这一点,这将提高性能。我试图坚持您使用的想法,这就是为什么您会找到一个
For循环
来获取总值,但首选的方法是EventEmitters。

您正在服务中再次实例化组件,这就是为什么数量为0为什么您要设置this.totalQuantity=0;在keyup事件方法中,这就是为什么你会得到零。你可以尝试使用事件发射器,因为它们可能会简化你的一些代码。另外,请注意,你使用了“keyup”事件来跟踪值的变化,使用“Up”和“Down”箭头不会得到新的值。鉴于此,可能只需使用
[(ngModel)]=“quantity”
而不是您的输入,例如:谢谢!我没想到使用选择器会实例化一个新组件。我看到您在带有@ViewChildren(QuantityComponent)的视图中引用了QuantityComponent。有没有办法在视图中创建从服务返回的数量组件?您可以参考ViewContainerRef。但是我可以知道你为什么要这样做吗?我只是在考虑将来的应用程序,当我可能需要在服务中创建一个组件,然后在我的视图中显示它时。谢谢你的帮助。