我有两个组件,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";}
触发控制台日志,但插值不是。
答案 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所说,你不能像服务那样注入组件。相反,您可以使用组件作为子组件来交换数据。