angular - 如何更改传入的@Input 值并发出@Output
问题描述
我知道这个问题与Angular Component Interaction非常相似,但我的问题有点不同。
我也看过ExpressionChangedAfterItHasBeenCheckedError
错误,但我无法解决我的问题。
我需要能够更改传入的输入值并将其发送到父组件。当输入值为 时empty string
,我想将其更改为null
这是我的代码:
value: string;
@Input('ngModel')
set ngModel(value: string) {
if(value == '')
{
this.value = null;
this.ngModelChange.emit(null);
}
else
{
this.value = value;
}
}
get ngModel(): string {
return this.value;
}
@Output('ngModelChange')
ngModelChange: EventEmitter<string> = new EventEmitter<string>()
这会引发以下错误:
AddClassMajorComponent.html:24 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'model: '. Current value: 'model: null'.
我用过ChangeDetectorRef
,但我无法成功。
我该如何解决?
谢谢你。
解决方案
像这样尝试@Input 和@Output 语法
@Input() value: string;
@Output() messageToEmit = new EventEmitter<string>();
ngOnInit(){
if(value == '') {
this.value = null;
this.messageToEmit.emit(null);
}
else {
this.value = value;
}
}
推荐阅读
- java - 如何在 Intellij IDEA 中禁用下拉列表/提示 LOGCAT
- javascript - 防止 useState 重新渲染动画
- axios - 变量不会在函数外部更新
- docker - 如果我在 Elasticsearch 中聚合日志,是否应该将来自 Elasticsearch 本身的日志发送到 Elasticsearch?
- python - 为什么在这里使用双 for 循环进行递归?
- scala - sbt 在命令行上运行,但不是 VS 代码
- java - 在运行时通过 @AutoWired 通过构造函数初始化对象
- redis - AWS 中的优雅缓存切换
- google-cloud-platform - GCP中如何使用ATECC608芯片生成JWT签名
- java - 如何用来自 HashMap 的数据填充 JTable?