Angular - 将字符串解析为{{ dataObject + 变量 }},其中变量 = 'object?.key.something | pipe'
创始人
2024-10-14 18:30:12
0

要将字符串解析为表达式,可以使用Angular的内置解析器Parser。以下是一个示例代码,演示如何使用Parser解析字符串并将其转换为Angular表达式:

import { Component, OnInit } from '@angular/core';
import { Parser } from '@angular/compiler';

@Component({
  selector: 'app-example',
  template: `
    
解析结果: {{ parsedExpression }}
`, }) export class ExampleComponent implements OnInit { dataObject = 10; expression = '{{ dataObject + variable }}'; variable = 'object?.key.something | pipe'; parsedExpression: any; constructor(private parser: Parser) {} ngOnInit() { const context = { dataObject: this.dataObject, variable: this.variable }; const ast = this.parser.parseBinding(this.expression, null); const transformedAst = this.parser.visitAll(ast, new ExpressionTransformer(), context); const expression = this.parser.print(transformedAst); this.parsedExpression = expression; } } class ExpressionTransformer { visitPipe(pipe: any, context: any) { const name = pipe.name; const args = this.visitAll(pipe.args, context); return { name, args }; } visitLiteralPrimitive(literal: any, context: any) { return literal.value; } visitPropertyRead(prop: any, context: any) { const contextValue = context[prop.receiver.value]; const propertyName = prop.name; return contextValue[propertyName]; } visitMethodCall(method: any, context: any) { const args = this.visitAll(method.args, context); return context[method.name](...args); } visitAll(nodes: any[], context: any) { return nodes.map(node => this.visit(node, context)); } visit(node: any, context: any) { if (typeof this[node.type] === 'function') { return this[node.type](node, context); } return node; } }

在上面的示例中,我们使用Parser解析字符串expression并将其转换为AST(抽象语法树)。然后,我们使用自定义的ExpressionTransformer访问器类来遍历AST并根据上下文计算表达式的值。最后,我们将转换后的表达式打印出来并将其显示在模板中。

请注意,上述示例中使用了Parser,它是Angular的内部类,因此需要将其导入到组件中。另外,还需要引入@angular/compiler模块。

希望这可以帮助到您!

相关内容

热门资讯

重大通报!wejoker辅助器... 重大通报!wejoker辅助器要钱玩吗,pokemmo脚本,普及教程(有挂辅助);大神普及一款德州a...
推荐一款!wepoker透视苹... 自定义wepoker透视苹果系统系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅...
实测揭晓!we-poker正规... 1、实测揭晓!we-poker正规吗,hhpoker德州透视,高科技教程(有挂透明)2、进入游戏-大...
记者揭秘!wepoker亲友圈... 1、记者揭秘!wepoker亲友圈有用吗,wepoker私人辅助器,存在挂教程(有挂技巧)2、进入游...
必备攻略!hhpoker德州透... 必备攻略!hhpoker德州透视,hhpkoer辅助器,可靠教程(有挂教程);1.hhpoker德州...
每日必备!pokemmo脚本辅... 每日必备!pokemmo脚本辅助下载,hhpoker怎么开透视,细节揭秘(有挂教程),支持语音通讯、...
我来向大家传授!wepoker... 我来向大家传授!wepoker透视有没有,hhpoker可以控制牌吗,揭秘教程(有挂技巧);小薇(透...
普及知识!如何下载wepoke... 普及知识!如何下载wepoker安装包,微扑克微乐辅助,揭秘攻略(有挂透明);玩家必备必赢加哟《13...
分享一款!佛手在线是不是有挂,... 分享一款!佛手在线是不是有挂,wepoker辅助器,曝光教程(有挂技巧)1、许多玩家不知道佛手在线是...
必看攻略!hhpoker破解工... 必看攻略!hhpoker破解工具,哈糖大菠萝有挂吗5个常用方法,技巧教程(有挂透明);哈糖大菠萝有挂...