Dra*_*axy 4 forms typescript angular angular4-forms
我正在尝试以我的第一个Angular形式获取输入字段的值,但是它始终是未定义的,而且我不知道为什么。我正确地导入了FormsModule,并且可以很好地引用表单对象,因此我必须缺少明显的东西。
我的组件HTML
<form #searchValue='ngForm' class="" (ngSubmit)='submitSearch(searchValue)'>
<div>
<input type="text" name="q" placeholder="search">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
和我的组件ts方法(缩短)
import { Component, OnInit } from '@angular/core';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'google-search',
templateUrl: './google.component.html',
styleUrls: ['./google.component.css']
})
export class GoogleComponent implements OnInit {
constructor() { }
ngOnInit() {
}
submitSearch(formData) {
console.log(this.searching);
console.log(formData.value.q);
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法为什么呢?
您需要用标记输入,ngModel以便angular会知道这是表单的控件之一:
<input type="text" ngModel name="q" placeholder="search">
Run Code Online (Sandbox Code Playgroud)
或者,您可以先在组件中定义变量,然后通过[(ngModel)]指令将输入绑定到该变量:
export class GoogleComponent implements OnInit {
q: string;
submitSearch() {
console.log(this.q);
}
}
<form class="" (ngSubmit)='submitSearch()'>
<div>
<input type="text" name="q" [(ngModel)]="q" placeholder="search">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
[ngModel]="q"如果您只想从输入中读取值,则一种绑定方式(just )就足够了。