Как получить доступ к переменной из другой функции в том же классе в Angular? - PullRequest
0 голосов
/ 28 февраля 2020

У меня (новичок) проблема, может кто-нибудь сказать мне, как я могу реорганизовать / переписать мои логи c, чтобы я мог получить доступ к переменной namesSplit в функцииvaluResult?

export class ExecutableVariableNode implements IExecutableNode {
execute(treeNode: ExpressionTreeNode, exprData: ExpressionData): any {
    let namesSplit = treeNode.name.split('.');
    let key = namesSplit[0];
    let contextEntry = exprData.contextEntry.find(_x => _x.name === key);

    if (namesSplit.length > 1) {
        this.evaluateResult(contextEntry.value);
    }
}

isPrimitive(test): boolean {
    return typeof test !== 'object';
}


// Get Values
evaluateResult(val) {
    if (this.getType(val) === ExpressionVariableType.OBJECT) {
        return Object.values(val);
    }
    else if (this.getType(val) === ExpressionVariableType.ARRAY_OF_OBJECTS) {
        for (let obs of val) {
            for (let n = 0; n < namesSplit.length; n++) {
                if (namesSplit[n] == Object.keys(obs)) {
                    let result = Object.values(obs);
                    console.log(result);
                    break;
                }
            }
        }
    }
    else if (this.getType(val) === LapsExpressionVariableType.ARRAY_OF_PRIMITIVES) {
        throw new StdException('Array of Primitives not allowed!');
    }
    else if (this.getType(val) === LapsExpressionVariableType.PRIMITIVE) {
        throw new StdException('Primtive values not allowed!');
    }
}

}

1 Ответ

1 голос
/ 28 февраля 2020

Создайте свою переменную как глобальную переменную, затем вы можете получить к ней доступ внутри класса следующим образом.

export class ExecutableVariableNode implements IExecutableNode {

    namesSplit: any;

    execute(treeNode: ExpressionTreeNode, exprData: ExpressionData): any {
        this.namesSplit = treeNode.name.split('.');
        let key = this.namesSplit[0];
        let contextEntry = exprData.contextEntry.find(_x => _x.name === key);

        if (this.namesSplit.length > 1) {
            this.evaluateResult(contextEntry.value);
        }
    }

    isPrimitive(test): boolean {
        return typeof test !== 'object';
    }


    // Get Values
    evaluateResult(val) {
        if (this.getType(val) === ExpressionVariableType.OBJECT) {
            return Object.values(val);
        }
        else if (this.getType(val) === ExpressionVariableType.ARRAY_OF_OBJECTS) {
            for (let obs of val) {
                for (let n = 0; n < this.namesSplit.length; n++) {
                    if (this.namesSplit[n] == Object.keys(obs)) {
                        let result = Object.values(obs);
                        console.log(result);
                        break;
                    }
                }
            }
        }
        else if (this.getType(val) === LapsExpressionVariableType.ARRAY_OF_PRIMITIVES) {
            throw new StdException('Array of Primitives not allowed!');
        }
        else if (this.getType(val) === LapsExpressionVariableType.PRIMITIVE) {
            throw new StdException('Primtive values not allowed!');
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...