【问题标题】:how to get value from textbox using typescript in angular 2如何使用 Angular 2 中的打字稿从文本框中获取值
【发布时间】:2017-09-10 14:57:44
【问题描述】:

我是 angular2 / typescript 的初学者,我正在尝试从两个文本框中获取数字并将两个数字相加并使用插值显示结果

@Component({
selector: 'my-app',
template: 
`<h1>Hello {{name}}</h1>
<h1>{{D}}</h1>
 <form>
  <p>first number:<input type="text" id="num1"></p>
  <p>second number:<input type ="text1" id="num2"></p>
  <h1> {{result}}</h1>
  </form>
   <test-app></test-app>`
  })

  export class AppComponent 
  { 
 name = 'Angular'; 
 value : number;value1 : number;result:number;
  constructor(value : number,value1 : number,result:number)
  {

  this.value = parseFloat
  ((document.getElementById("text") as HTMLInputElement).value);
  this.value1 = parseFloat((document.getElementById("text1") 
  as HTMLInputElement).value);
  this.result=this.value+this.value1;
  }}

【问题讨论】:

  • 绑定到表单元素是几乎所有 Angular 教程的一开始就涉及的内容,包括主要 Angular 2 站点上的许多操作方法和教程。按照发布的链接@echonax,看看你能不能弄明白。
  • 你读过 Angular 的东西吗?
  • 我读过@Aravind
  • 看完你没有得到这些信息?

标签: angular typescript


【解决方案1】:
@Component({
  selector: 'my-app',
  template: `<h1>Hello {{name}}</h1>
  <form (ngSubmit)="onSubmit(f)">
      <p>first number:<input type="text" ngModel name="num1" id="num1"></p>
    <p>second number:<input type="text" ngModel name="num2" id="num2"></p>
</form>
<test-app></test-app>`
  })

export class AppComponent {
  name = 'Angular';

  constructor() {
  }

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

【讨论】:

    【解决方案2】:

    HTML

    <p>first number:<input type="number" [(ngModel)]='a'></p>
    <p>second number:<input type ="number" [(ngModel)]='b'></p>
    <h1>{{a + b}}</h1>
    

    组件

    export class AppComponent 
      { 
     a: number = 0; //set default value as 0
     b: number = 0;
    
    }
    

    【讨论】:

    • 问题是如果 a = 4 和 b = 5 你希望总和,因此在 h1 它应该显示 9 ,但实际上这将显示 45
    【解决方案3】:

    HTML

    <p>first number:<input type="text" id="num1" [(ngModel)] = "value" ></p>
    <p>second number:<input type ="text1" id="num2" [(ngModel)] = "value1"></p>
    <h1> {{value + value1}}</h1>
    

    组件类

     export class AppComponent {}
    

    【讨论】:

    • 谢谢你的回答,但是使用按钮事件我们怎么能做到这一点
    • 在你的 html 中添加一个按钮 。在课堂上制作 addValues 函数。 addValues() { this.result = this.value + this.value1; } 用 h1 标签中的结果替换 value + value1。
    • 还在组件类中声明value、value1和result变量。
    【解决方案4】:

    如果你没有使用 ngModel:

    var   num1= ((document.getElementById("num1") as HTMLInputElement).value);
    var   num2= ((document.getElementById("num2") as HTMLInputElement).value);
    var result=parseInt(num1)+parseInt(num2);
    console.log(result);
    

    【讨论】:

      【解决方案5】:
      app.component.html
      
      <div>
            <input type='text' [(ngModel)]='userName' placeholder='user name' class='user_id_text'>
            </div>
            <div>
            <input type='password' [(ngModel)]='password' placeholder='password' class='user_id_password'>
            </div>
            <div>
            <input type='submit' value='Login' (click)='registeredUser($event)'>
            </div>
      
      app.component.ts
      
      export class AppComponent implements OnInit{
      userName ='';
      password = '';
      
      ngOnInit(){
        console.log(this.userName+' password -'+this.password);
      }
      registeredUser(){
       let {userName,password} = this;
      
       if(userName=='ssss' && password == 'ssss'){
          console.log(userName+' password -'+password);
       }
      }
      

      } 说明 - 带有 [()] 的 ngModel 是双向绑定。 UI 中的值始终同步回您类中的域模型

      【讨论】:

      • 展示完整的解决方案非常有帮助。只有在我的情况下,它不喜欢 ` 符号 - 必须替换为“。谢谢!
      【解决方案6】:

      html:

       <input type="text" id="obj_id" >
      

      ts > 读作:

       (<HTMLInputElement>document.getElementById(obj_id)).value
      

      如果在for循环中涉及到对象,则给出文本框 来自对象字段值的 id 然后使用 [id] 而不是 id

      <input type="text" [id]="obj.field"  >
      

      【讨论】:

        【解决方案7】:

        最简单的方法是使用模板引用变量:

        @Component({
          selector: 'app-little-tour',
          template: `
            <input #newHero > 
            <button (click)="addHero(newHero.value)">Add</button>
        })
        
        export class LittleTourComponent {
          addHero(newHero: string) {
            console.log(newHero)
          }
        }
        

        可在此处找到有关 Angular 用户输入的完整指南:https://angular.io/guide/user-input

        【讨论】:

        • 当输入 id 像#newHero{{i}} 这样动态时出现问题,我将它的值传递给像这样的点击方法(click)="addHero(newHero{{i}}.vaue" 但它会导致编译错误,我不知道该怎么做对,任何有助于推动正确方向的帮助都将非常感激。
        猜你喜欢
        • 2017-04-13
        • 2019-01-17
        • 1970-01-01
        • 2017-04-14
        • 2017-08-17
        • 2018-08-01
        • 2020-09-27
        • 1970-01-01
        • 2018-11-14
        相关资源
        最近更新 更多