【问题标题】:Angular2 - Keyup require a clarificationAngular2 - Keyup 需要澄清
【发布时间】:2016-06-30 07:56:09
【问题描述】:

在我的应用程序中,有条件地我正在添加一个类。当用户输入内容时,我正在检查值,因此我正在添加类名。它工作正常。

但它只在(keyup)='0' 的集合上更新 - 在keyup 上设置一些值。这不像angular 1 这里。

所以有人解释一下为什么我们在这里设置(keyup)=0?它对我们有什么作用?

这是我的代码:

import {Component} from "angular2/core"

@Component({

    selector : 'my-component',

    template : `
                <h2>My Name is: {{name}} 
                    <span [class.is-awesome]="formReplay.value === 'yes' ">So good</span>
                </h2>
                <input type="text" #formReplay (keyup)="0" />
                `,

    styles  : [`

        .is-awesome{
            color:green;
        }

    `]

})

export class MyComponent { 
    name = "My Name";   
}

【问题讨论】:

  • 没什么,keyup 什么都不做,只是触发了变化检测。 0 没有任何意义,因为有一个空事件 produces an error

标签: angular angular2-template


【解决方案1】:

Offical docs

@Component({
  selector: 'loop-back',
  template:`
    <input #box (keyup)="0">
    <p>{{box.value}}</p>
  `
})
export class LoopbackComponent { }

在官方文档中查找。

除非我们绑定到一个事件,否则这根本不起作用。

如果我们这样做,Angular 只会更新绑定(因此也会更新屏幕) 响应异步事件,例如击键。

这就是为什么我们将 keyup 事件绑定到一个声明......好吧, 没有。我们绑定到数字 0,这是我们能做到的最短语句 考虑到。这就是让 Angular 满意的全部内容。我们说会 聪明点!

【讨论】:

  • 是的,Eric! :-)
  • 这里有一个更好的解决方案 - stackoverflow.com/a/35368127/968003&lt;input type="text" [ngModel]="mymodel" (keypress)="mymodel=$event.target.value"/&gt; {{mymodel}} 当前的对input[type="number"] 不起作用,而不是输入值,用户单击向上/向下箭头。然后输入中的值发生变化,但keyup 事件没有触发。
  • 我们为什么要绑定到一个语句?在文档中它说我们必须绑定到一个事件。如果我们有模板引用变量,为什么我们甚至必须将 keyup 绑定到任何东西?
猜你喜欢
  • 2011-11-09
  • 2012-07-18
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2012-06-02
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多