2016-12-13 38 views
0

我正在學習角2.我有一串字符串(單元格中有1個符號)。即時通訊這個數組循環,當數組中的任何符號==「,」我必須停止代碼並等待用戶的輸入(如提示,但我需要使用相同的)。當用戶按「輸入」時,它應該恢復這個值。捕捉事件的最佳方式是什麼?如何捕捉循環角度2中的事件?

import { Component, EventEmitter, Input, Output } from '@angular/core'; 
 

 
@Component({ 
 
    selector: 'code_input', 
 
    template: `<div class="form-group"> 
 
    <h4>Input</h4> 
 
    <input type="text"> 
 
    <textarea class="form-control" rows="10" id="comment" (keyup)="outcode(inputCode)" 
 
       [(ngModel)]="inputCode"></textarea> 
 
    <h4>Output</h4> 
 
    <div>{{ outputCode }}</div> 
 
       </div>`, 
 
    styles: [` 
 
     :host { 
 
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
 
    
 
} 
 
    `], 
 
    styleUrls: ['bootstrap/css/bootstrap-theme.css', 'bootstrap/css/bootstrap.css'] 
 
}) 
 
export class CodeInput { 
 
    @Input() inputCode: string; 
 
    outputCode: string; 
 

 

 

 
    outcode(inputCode: string) { 
 

 
     var acc: string[]; 
 
     acc = inputCode.split(''); 
 
     var cpu = new Array(30000).fill(0); 
 

 
     var brc: number = 0; 
 

 
     var j: number = 0; 
 
     this.outputCode = ""; 
 

 
     for (let i = 0; i < acc.length; i++) { 
 
      if(acc[i] === ',') { 
 

 
     //wait for input here, after input cpu[j] = (user's symbol) 
 
        
 
       
 
      } 
 
     } 
 
    } 
 
}

+0

請問您能解釋一下這個目標是什麼以及數組是否來自用戶輸入? @Vadim – Yaser

+0

這個目標 - 簡單語言的interpriter。數組來自用戶輸入的textarea,是的 – Vadim

回答

0

嘗試事件emmiter結合。

@Output() enter = new EventEmitter(); 

然後裏面的方法,

outcode(inputCode: string) { 

    var acc: string[]; 
    acc = inputCode.split(''); 
    var cpu = new Array(30000).fill(0); 

    var brc: number = 0; 

    var j: number = 0; 
    this.outputCode = ""; 

    for (let i = 0; i < acc.length; i++) { 
     if(acc[i] === ',') { 


      this.enter.emit({event:$event}); 

     } 
    } 
} 

而在HTML中添加輸入像下面

<textarea class="form-control" rows="10" id="comment" (keyup)="outcode(inputCode)" (enter)="userEntered()" 
[(ngModel)]="inputCode"></textarea> 

所以,你可以寫在userEntered()方法,你的代碼的方法。

+0

我需要類似js中的「提示符」,但是在textarea之前的輸入中。 (acc [i] ===','){ cpu [j] = prompt(「variable」,「」); } 多數民衆贊成工作正常,但我需要相同的輸入,而不是在提示( – Vadim