2016-12-13 2 views
0

Im обучение угловой 2. У меня есть массив строк (1 символ в ячейке). im cheking этот массив в цикле, и когда любой символ в массиве == "," я должен остановить код и ждать ввода пользователя (например, приглашение, но мне нужно такое же использование). Когда пользователь нажимает «enter», он должен возобновиться с этим значением. Каков наилучший способ поймать событие?Как поймать событие в цикле углового 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

Цель этого - интерприбор простого языка. массив поступает из textarea с пользовательского ввода, да – Vadim

ответ

0

Try событие эмиттером связывания.

@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, но на входе перед текстовым полем. if (acc [i] === ',') { cpu [j] = prompt ("variable", ""); } thats отлично работает, но мне нужно то же самое во вводе, а не в подсказке ( – Vadim

Смежные вопросы