应该如何在子组件中使用/观察父@Output()事件emits 器?

For example in this demo子组件按如下方式使用@Output onGreetingChange:

<app-greeting [greeting]="onGreetingChange | async"></app-greeting>

如果在AfterViewInit生命周期挂钩中有onGreetingChange个排放,这将会起作用.

  ngAfterViewInit() {
    this.onGreetingChange.emit('Hola');
  }

然而,这会产生AN ExpressionChangedAfterItHasBeenCheckedError错误.

有没有一种方法可以在不产生错误的情况下实现这一点?

我试着在constructorOnInit两种车型上都进行了排气.有什么 idea 吗?

推荐答案

您可以手动触发change detection,使用detectChanges()

我的猜测是,由于它是一个非传统的方式改变了@Input变化检测是失踪的变化,所以我们需要手动运行它!

  ngAfterViewInit() {
    this.onGreetingChange.emit('Hola');
    this.cdr.detectChanges();
  }

stackblitz

Javascript相关问答推荐

在JavaScript中检索一些文本

有Angular 的material .未应用收件箱中的价值变化

我开始使用/url?q=使用Cheerio

如何从JSON数组添加Google Maps标记—或者如何为数组添加参数到标记构造器

WebRTC关闭navigator. getUserMedia正确

我们如何从一个行动中分派行动

MathJax可以导入本地HTML文档使用的JS文件吗?

你怎么看啦啦队的回应?

如何在Vue 3中创建自定义 Select 组件,并将选项作为HTML而不是props 传递?

如何使用子字符串在数组中搜索重复项

VSCode中出现随机行

如何限制显示在分页中的可见页面的数量

无法避免UV:flat的插值:非法使用保留字"

顶点图使用组标签更新列之间的条宽

AG-GRIDreact 显示布尔值而不是复选框

我为什么要使用回调而不是等待?

如何在Highlihte.js代码区旁边添加行号?

输入数据覆盖JSON文件

当S点击按钮时,我如何才能改变它的样式?

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据