Angular 嵌套子组件未将信息传递给父组件

Angular 嵌套子组件未将信息传递给父组件,angular,Angular,我正在学习如何在父组件和子组件之间传递信息。我知道信息是通过@Inputs和@Outputs传递的 例如,我有一个父类,它实例化了一个名为 test: string; 然后给它分配一个随机字符串,如 ngOnInit() { this.test = "message from parent"; } 我使用@Input将这个变量传递给几个嵌套的子类,在我的console.log(test)中,在我的最后一个子类中,我成功地返回了从父类收到的值。然而,当我在child类中更改它

我正在学习如何在父组件和子组件之间传递信息。我知道信息是通过@Inputs和@Outputs传递的

例如,我有一个父类,它实例化了一个名为

test: string;
然后给它分配一个随机字符串,如

  ngOnInit() {
    this.test = "message from parent";
   }
我使用@Input将这个变量传递给几个嵌套的子类,在我的console.log(test)中,在我的最后一个子类中,我成功地返回了从父类收到的值。然而,当我在child类中更改它时,真正的问题就开始了。在我的子类中,我有一个函数:

@Output() testChange: EventEmitter<any> = new EventEmitter();

newSpecifier(){
    this.test= "this changed"
    this.testChange.emit(this.test)

  }
@Output()testChange:EventEmitter=neweventemitter();
新闻指定程序(){
this.test=“此已更改”
this.testChange.emit(this.test)
}
和一个按钮来触发这个功能。但是,当我单击按钮时,父“test”没有发生任何变化。我在原始父HTML中有一个div,其值为{{this.test}},但当我单击该按钮时,它不会改变。我认为我的信息没有正确地传递回父组件。任何为我指明正确方向的帮助都将非常好,提前谢谢

您需要监听父组件中发出的更改。下面是一个关于你如何实现你想要做的事情的例子
you need to listen to the emitted changes in your parent component. Below is an example on how you can achieve what you are trying to do

Parent-HTML
<parent-component>
   <child-component (testchange)="onTestChange($event)></child-component>
</parent-component>

In Parent--ts file
 ------------------
    onTestChange(event)
    {
      this.test=event
    }
父HTML
在子组件中,将输出更改为
@Input()myVariable:string
。然后在父级的.html文件或父级的“html模板”中,在其中呈现子组件,只需通过属性绑定传入值。因此,父对象中的HTML代码如下所示

`
<child-component [myVariable]="this.test"></child-component>
`
`
`

这将把值从父组件传递给子组件。

当您从子组件发出某些事件时,父组件需要某种方式来“侦听”这些事件。在父子动态中,必须在父组件内部实现的事件侦听器方法支持此机制。让我们看看你的案子

child.component.ts:


您可以在这里阅读更多内容:

您能提供一个片段吗,我想不出问题所在。
@Output() testChange: EventEmitter<any> = new EventEmitter();

newSpecifier(){
    this.test= "this changed"
    this.testChange.emit(this.test)
}
<div>
    <child-component (testChange)="onTestChangeEventHandler($event)"> </child-component>
</div>
onTestChangeEventHandler(event) {
     // here you can do whatever you want with emmited value from child component
     console.log(event);
}