我试图读取HTML元素的属性值,如angular 2中的输入标记 . 我首选的方法是将input元素与component属性绑定,而不创建另一个模型类

我所知道的两个解决方案是:

1) Using JSON object :为表单创建一个引用变量:

<form (ngSubmit)="onSubmit(loginForm)" #loginForm="ngForm">

我的登录组件将成为

onSubmit(form:NgForm){
    console.log(form.value);
}

2) 创建模型对象并在组件中初始化它

user=new User();
onSubmit(form:NgForm){
   console.log(user.username); 
}

并在HTML中

<input type="text" id="username" name="username" 
            [(ngModel)]="user.username" #username="ngModel"/>

但我不想使用上面提到的任何方法(不想使用JSON对象NOR想为每个提交的表单创建模型对象..我应该吗?)

我想直接绑定组件属性 . 所以这样的事情

我想直接将用户在输入元素用户名中输入的内容读入LoginComponent用户名的属性(关注[(ngModel)] = "username"而不是[(ngModel)] = "user.username"

<form (ngSubmit)="onSubmit()" #loginForm="ngForm">
                <input type="text" id="username" name="username"     [(ngModel)]="username" #username="ngModel"/>
                {{username}}           
    		<button type="submit">Login</button>
 </form>
@Component({'
.. something
  templateUrl: './login.component.html'
})
export class LoginComponent implements OnInit {
   username:string;
  onSubmit(){
    console.log(username);
    console.log(user?.username);
  }  
}

EDIT 我试过用"this"

onSubmit(){
    console.log(this.username);
  }

但后来我得到的错误是zone.js:632错误:未捕获(在承诺中):错误:无法分配给引用或变量!

Error: Cannot assign to a reference or variable!
 Thanks in advance for the help