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
始终等于视图childs
leftExpression.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;
    }
}