如何在angular4中按回车键关注下一个输入字段

如何在angular4中按回车键关注下一个输入字段
      从’@ angular / core’导入{Component,OnInit,ElementRef,ViewChild,Directive,Renderer,AfterViewInit};

@Component({
    selector: 'cbody',templateUrl: './cbody.component.html',styleUrls: ['./cbody.component.css']
  })  
  export class CbodyComponent  implements  OnInit,AfterViewInit  {
    constructor(public renderer: Renderer,private el:ElementRef) {           
      }
  @ViewChild('ft01') infocus: ElementRef;

    ngOnInit(){};
    ngAfterViewInit() {
            this.renderer.invokeElementMethod(
          this.infocus.nativeElement,'focus');                     
          }

    keytab(event:any){      
          console.log(event.keyCode );  
          console.log(this.dataloops );     
    }

   dataloops=[
  { "name":"csdn","url":"www.runoob.com" },{ "name":"google","url":"www.google.com" },{ "name":"ifeng","url":"www.weibo.com" }
  ]

  }

 <p>
   cbody works!
 </p>


 <div>
 <ul *ngFor="let dataloop of dataloops">
    <li  >{{dataloop.name}}<input type="text" name="intext" [(ngModel)]="dataloop.url" #ft01 (keyup.enter)="keytab($event)"/></li>
 </ul>
 </div>

解决方法

你正在以错误的方式使用* ngFor,它会重复放置的元素.
你需要在li元素上设置* ngFor.

<ul>
    <li *ngFor="let dataloop of dataloops">
       {{dataloop.name}}
        <input type="text" name="intext" 
        [(ngModel)]="dataloop.url" #ft01 (keyup.enter)="keytab($event)"/>  
    </li>
 </ul>

现在更新.ts文件如下

keytab(event){
    let element = event.srcElement.nextElementSibling; // get the sibling element

    if(element == null)  // check if its null
        return;
    else
        element.focus();   // focus if not null
}

这段代码应该可以正常工作

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...