角度2:触发插值来自其他组件不起作用

时间:2018-05-10 11:03:40

标签: angular

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

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

public elementType: string = "test";

C2在C1中的定义如下:

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

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

2 个答案:

答案 0 :(得分:1)

您正在将组件视为服务。所以将它添加到构造函数和所有。

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

在C1

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

答案 1 :(得分:1)

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

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

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