angular - Angular 2:表达式在检查后发生了变化
问题描述
短篇小说:Expression has changed after it was checked. Previous value: 'xx'. Current value: 'xx'.
,当我从我的组件更新变量时出现错误。
长话短说:
我有一个ParentComponent
包含我正在更新的变量,名为totalAmount
. 然后我有一个ChildComponent
影响值totalAmount
但无权访问所述变量的值。发生的情况是我有一个subtotal
变量,ParentComponent
我传递给ChildComponent
使用@Input
然后我只是重新计算totalAmount
从,ParentComponent
因为我可以访问subtotal
它。像这样:
ParentComponent.ts
this.totalAmount = this.subtotal + (some other values)
然后我ParentComponentTemplate.html
像这样显示它:
<span>{{ totalAmount | money }}</span>
一切正常。然后突然totalAmount
必须在一个input
盒子里,因为应该有一种方法可以覆盖它。span
所以我不得不这样做,而不是一个元素:
<input type="text" name="totalAmount" [(ngModel)]="totalAmount" />
现在问题开始了。每次subtotal
在我的ChildComponent
更改中,我都会收到错误消息Expression has changed after it was checked. Previous value: 'xx'. Current value: 'xx'
。
现在我已经阅读了几篇关于这个的文章,它是 Angular 中的一个特性,但是我们该怎么做呢?有没有解决方案而不是解决方法?
提前致谢!
解决方案
解决方案是您必须了解错误并相应地更改代码。
尽管非常明确,但此错误并未说明它是生命周期错误。
如果你想解决这个问题,你需要遵循生命周期,而不是尝试看看会发生什么。
尽管您似乎相信您发布了足够多的代码,但您没有:下次发布您的整个代码而不是解释,因为即使您看起来很清楚,它也不适合我。
最后,javascript 变量通过引用传递:这意味着当您更改输入的值时,您更改的是引用,而不是值。
所以,你可以尝试什么:
- 父母有总金额
- 孩子没有
@Input
- 当
<input>
孩子的值发生变化时,您会发出一个事件 - 父母监听那个事件,并相应地改变总值
推荐阅读
- maven - 招摇 | 通过 maven 命令将 YAML 转换为 JSON
- django - 无法从 Docker 容器中的 Django 应用程序连接到 mssql 数据库
- tcp - 谁负责处理掉电后客户端临时端口重用?
- android - 如何使用其 Uri 在 Android Studio 中获取我由 Intent 选择的一个视频的路径?
- sql - 比较 CASE 中的字符串
- c# - 是否可以通过 Microsoft Bot Framework 自定义 Teams 中接收到的图像和 GIF 的大小
- r - 循环具有相同前缀的变量
- java - 使用 showInstallPrompt 从即时调用可安装应用程序的 Java 语法
- angular - 为什么我的 const 变量输出,不为空
- reactjs - AWS AppSync + React-Apollo Query/useQuery 引发异常 this.currentObservable.query.getCurrentResult 不是函数