Javascript 用于更改角度2或更高版本中的特定变量的动态脚本

Javascript 用于更改角度2或更高版本中的特定变量的动态脚本,javascript,angular,Javascript,Angular,目前,您可以使用用户的最终脚本。此脚本可以修改一些以前可用的变量。 我用纯javascript创建了一个小示例,我想在angular 2+中也这样做 提前感谢您的关注 HTML代码 <div class="container"> <form> <div class="form-group"> <label for="descricao">Nome</label>

目前,您可以使用用户的最终脚本。此脚本可以修改一些以前可用的变量。 我用纯javascript创建了一个小示例,我想在angular 2+中也这样做

提前感谢您的关注

HTML代码

    <div class="container">
      <form>
        <div class="form-group">
          <label for="descricao">Nome</label>    
          <input type="text" id="descricao" name="descricao" class="form-control" />
        </div>
        <div class="form-group">
          <label for="valor">Valor</label>
          <input type="text" id="valor" name="valor" value="10" class="form-control" />
        </div>
        <div class="form-group">
          <label for="quantidade">Quantidade</label>  
          <input type="text" id="quantidade" name="quantidade" value="20" class="form-control" />
        </div>
        <div class="form-group">
          <label for="total">Total</label>  
          <input type="text" id="total" name="total" class="form-control" />
        </div>
        <div class="form-group">
          <label for="codex">Code</label>  
          <textarea id="codex" name="codex" rows="10" cols="100" class="form-control">
          if (qtde &lt; 15) {
              vlr = 10;
          } 
          else 
          {
              vlr = 9;
          }
          tot = vlr * qtde;
          </textarea>
        </div>

        <button type="button" id="calcular" name="calcular" onclick="calcularx();" class="btn btn-primary">Calcular</button>
      </form>
    </div>

这是一个plnkr,它将实现您所寻找的目标

使用eval创建函数,然后使用组件上下文调用它。组件中的所有函数和变量都可用于文本框代码:

模板 价值:

<label>Code:</label>
<textarea [(ngModel)]="code"></textarea> <br>

<button (click)="executeCode(code)">Do it.</button>
然而,请记住eval通常是邪恶的,并且这个用例非常奇怪。我不确定你的用户是否应该控制代码。无论如何,这取决于你

此外,如果您想避免代码文本框中的“this.”,则始终可以在变量名上使用replace将其添加到场景后面

<label>Code:</label>
<textarea [(ngModel)]="code"></textarea> <br>

<button (click)="executeCode(code)">Do it.</button>
export class HelloWorld {

  value = 100;
  code = 'this.value = this.value * 100';

  executeCode(code){
    let fn = eval("(function(){ {0} })".replace("{0}", code));
    fn.call(this);
  }
}