Javascript 将ViewChild绑定到类中的属性
我试图找出如何将视图子级绑定到视图中类的子组件 我有一个模拟二进制表达式的模型:Javascript 将ViewChild绑定到类中的属性,javascript,angular,typescript,tree,expression,Javascript,Angular,Typescript,Tree,Expression,我试图找出如何将视图子级绑定到视图中类的子组件 我有一个模拟二进制表达式的模型: export interface IODataExpression{ } export class ODataExpressionDescriptor implements IODataExpression{ property: ODataProperty; selectedFunction: ODataFunctionDescriptor; value: any; isNega
export interface IODataExpression{
}
export class ODataExpressionDescriptor implements IODataExpression{
property: ODataProperty;
selectedFunction: ODataFunctionDescriptor;
value: any;
isNegated: boolean = false;
}
export class ODataBinaryExpressionDescriptor implements IODataExpression{
left: IODataExpression;
right: IODataExpression;
operator: ODataBinaryOperators;
}
我有一个组件类,看起来是这样的:
binaryExpression: ODataBinaryExpressionDescriptor = new ODataBinaryExpressionDescriptor();
binaryOperatorKeys: any;
binaryOperators = ODataBinaryOperators;
@ViewChild('left') leftExpression: OdataSimpleFilterComponent;
left属性指向内部具有以下属性的组件:
odataExpression: ODataExpressionDescriptor = new ODataExpressionDescriptor();
如何使
二进制表达式.left
始终等于视图childsleftExpression.odataExpression
?使用事件发射器
在OdataSimpleFilterComponent中
@Output() odataExpressionChange = new EventEmitter<ODataExpressionDescriptor>();
在主组件中,您必须在ngAfterViewInit
(或ngAfterViewChecked
)中执行操作,以确保leftExpression
已初始化:
ngAfterViewInit() {
leftExpression.odataExpressionChange.subscribe(data => {
this.binaryExpression.left = data;
}
}
这样,每当子组件中的值发生更改时,您都会收到一个通知(通过对EventEmitter
的子描述),并可以做出相应的反应
当然,一些细节可能会发生变化,因为我不知道您的实现的所有细节。太好了,请给我一秒钟时间来尝试这个持续时间太长的方法
ngAfterViewInit() {
leftExpression.odataExpressionChange.subscribe(data => {
this.binaryExpression.left = data;
}
}