防止按Enter键在Angular4中创建新行

时间:2018-12-27 05:19:52

标签: html angular forms input

我在按Enter时提交了一个文本区域

https://stackblitz.com/edit/angular-uvxifq-uyxteg

<textarea class="message-area" (keyup.enter)="ValidateCommentAndPost(commentErr, $event);" [(ngModel)]="comment" matInput #commentErr="ngModel"></textarea>

我想在按Enter时禁用新行,所以我在网络上获取了一些信息,然后做了。

ValidateCommentAndPost(ngComment:NgModel, event?:KeyboardEvent){
    event.preventDefault();
    if((ngComment.invalid && (ngComment.dirty || ngComment.touched)) && ngComment.errors) {
        this.ResetComment();
    } else {
        this.PostComment();
    }
}

但这还是行不通的,return false;仍会创建一条白线。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

添加事件以捕获回车并阻止默认行为。 将keydown事件添加到您的组件html

<textarea required
(keydown.enter)="onKeydown($event)" (keyup.enter)="ValidateCommentAndPost(commentErr, $event);" pattern="/^[/\S/]+$/i" [(ngModel)]="value" matInput #commentErr="ngModel"></textarea>

并将其添加到您的组件ts文件

onKeydown(event){
      event.preventDefault();
    }