Angular 角度2:从其他组件触发插值不工作

Angular 角度2:从其他组件触发插值不工作,angular,Angular,我有两个组件,C1和C2。 我想在单击C1中的按钮时触发C2中的插值 插值在C2中定义为公共变量: 公共元素类型:string=“test” C2在C1中的定义如下: import {PropertiesComponent} from "../properties/properties.component"; constructor(private propComp: PropertiesComponent) {} setActive(model){console.log("test"); th

我有两个组件,C1和C2。 我想在单击C1中的按钮时触发C2中的插值

插值在C2中定义为公共变量:

公共元素类型:string=“test”

C2在C1中的定义如下:

import {PropertiesComponent} from "../properties/properties.component";
constructor(private propComp: PropertiesComponent) {}
setActive(model){console.log("test");
this.propComp.elementType = "updated value";}

控制台日志会被触发,但插值不会被触发。

您将组件视为服务。因此,将其添加到构造函数中

您可以将elementType作为@Input()elementType从C2传递到C1,它将满足您的期望

在C1中

@Input() elementType;
setActive(model){
console.log("test");
this.elementType = "updated value";
}

您将组件视为服务。因此,将其添加到构造函数中

您可以将elementType作为@Input()elementType从C2传递到C1,它将满足您的期望

在C1中

@Input() elementType;
setActive(model){
console.log("test");
this.elementType = "updated value";
}

利用角度服务参考C2组件内部C1组件设置的值。 将服务注入两个组件中。 在服务中声明变量
elementType
。 在组件C1内设置服务变量
elementType
。 现在,您可以通过服务实例在组件C2中访问它

如果您不喜欢使用服务,则必须使用
@Input()
@Output()
变量从C1传递到C2


正如@Padmapriya所说,您不能像服务一样注入组件。相反,您可以将组件用作子组件来交换数据。

使用角度服务来引用C2组件中C1组件设置的值。 将服务注入两个组件中。 在服务中声明变量
elementType
。 在组件C1内设置服务变量
elementType
。 现在,您可以通过服务实例在组件C2中访问它

如果您不喜欢使用服务,则必须使用
@Input()
@Output()
变量从C1传递到C2


正如@Padmapriya所说,您不能像服务一样注入组件。相反,您可以使用组件作为子组件来交换数据。

我还尝试了@Input()elementType:string=“test”;但这在C2中没有任何区别,在C1中没有。真的很好。请仔细阅读以便完全理解。C2和C1中这个变量之间的联系发生在哪里?你能解释一下吗?我已经编辑了我的帖子,如果你想让子项更改到达父项,那么就使用event-emitting@Output()onSetActive=new-EventEmitter();并发出此.onSetActive.emit(已同意);谢谢你的帮助。我用服务解决了这个问题。我认为这是正确的方法!我还尝试了@Input()elementType:string=“test”;但这在C2中没有任何区别,在C1中没有。真的很好。请仔细阅读以便完全理解。C2和C1中这个变量之间的联系发生在哪里?你能解释一下吗?我已经编辑了我的帖子,如果你想让子项更改到达父项,那么就使用event-emitting@Output()onSetActive=new-EventEmitter();并发出此.onSetActive.emit(已同意);谢谢你的帮助。我用服务解决了这个问题。我认为这是正确的方法!