首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角6在enter键上添加输入

角6在enter键上添加输入
EN

Stack Overflow用户
提问于 2018-09-17 21:12:19
回答 4查看 140.4K关注 0票数 67

我有一个名为text-editor.component的组件,这是我的html模板:

代码语言:javascript
复制
<div class="container">

<div id="testo" class="offset-1 text-center" >
  <input type="text" class="col-8 text-center">
 </div>
</div>

当我按enter键时,我想要添加一个新的输入文本。这就是我想要达到的目标:

代码语言:javascript
复制
<div id="testo" class="offset-1 text-center" >
  <input type="text" class="col-8 text-center">
  <!-- second input -->
  <input type="text" class="col-8 text-center">
 </div>
</div>

当用户在输入文本后按回车,新的输入就会产生。我正在使用角的模板驱动的形式。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-17 21:35:07

您可以使用反应性形式FormArray来处理这个问题。您可以将(keyup)(keyup.enter)处理程序附加到<input />。在此keyup事件的处理程序中,我们将一个新的FormControl推送到FormArray。此示例使用FormBuilder生成一个包含键为thingsFormArrayFormGroup。我们使用FormArrayFormArray方法在密钥处理程序中添加一个新的FormControl/AbstractControl

构成部分:

代码语言:javascript
复制
import { Component } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
    
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';
  myForm: FormGroup;
    
  constructor(private fb: FormBuilder) {
    this.createForm();
  }
    
    
  onEnter() {
    this.addThing();
  }
    
  get things() {
    return this.myForm.get('things') as FormArray;
  }
    
  private createForm() {
    this.myForm = this.fb.group({
      things: this.fb.array([
        // create an initial item
        this.fb.control('')
      ])
    });
  }
    
  private addThing() {
    this.things.push(this.fb.control(''));
  }
}

模板:

代码语言:javascript
复制
<form [formGroup]="myForm">
    <div formArrayName="things">
        <div *ngFor="let thing of things.controls; let i=index">
            <label [for]="'input' + i">Thing {{i}}:</label>
            <input type="text" [formControlName]="i" [name]="'input' + i" [id]="'input' + i" (keyup.enter)="onEnter()"  />
        </div>
    </div>
</form>

在非常基本的级别上,您可以使用各自的控件元素的FormArray属性和使用价值属性的值遍历表单数组中的每个数组:

代码语言:javascript
复制
<ul>
  <li *ngFor="let thing of things.controls">{{thing.value}}</li>
</ul>

下面是一个演示该功能的StackBlitz

票数 95
EN

Stack Overflow用户

发布于 2018-09-17 22:34:40

控制器

声明一个数组‘输入’,并以1的值初始化它。

代码语言:javascript
复制
inputs = [1];

创建一个函数addInput()。

代码语言:javascript
复制
addInput() {
  this.inputs.push(1);
}

HTML

代码语言:javascript
复制
<div id="testo" class="offset-1 text-center" *ngFor="let more of inputs">
<input type="text" class="col-8 text-center" (keyup.enter)="addInput()">
</div>

在模板中,每次单击enter (keyup.enter)时都会调用addInput()函数。函数将一个新值推入数组中,数组的长度增加1,然后创建一个新的输入字段。

票数 39
EN

Stack Overflow用户

发布于 2021-02-12 19:16:30

您可以很容易地使用角6,角7,角8和角9应用中的按键事件。

当用户键入输入框字段时,触发角分量的onKeyDownEvent()。您可以使用(keydown.enter)属性来调用函数。贝娄逻辑代码:

.html

代码语言:javascript
复制
<input type="search" (keydown.enter)="onKeyDownEvent($event)" />

.ts

代码语言:javascript
复制
@Component({
  selector: 'my-app',
  templateUrl: './my.component.html',
  styleUrls: ['./my.component.css']

})
export class MyComponent {

  
  constructor(private router: Router,
              private route: ActivatedRoute) { }

  onKeyDownEvent(event: any) {
    this.router.navigate(['search-result'], { relativeTo: this.route });
    ...logic

  }
}

请注意,我们需要以编程的方式导航到其他路由,在.ts文件中,而不是在带有routerLink=“/搜索结果”的html文件中。我们需要注入路由器和ActivatedRoute类,以便从当前路由导航到/搜索结果路由。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52375765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档