传入 $event 是靠不住的做法,违反了模板(用户看到的)和组件(应用如何处理用户数据)之间的分离关注原则。
模板引用变量
方式一,最简单
@Component({selector: 'app-loop-back',template: `<input #box (keyup)="0"><p>{{box.value}}</p>`})export class LoopbackComponent { }
除非你绑定一个事件,否则这将完全无法工作。 只有在应用做了些异步事件(如击键),Angular 才更新绑定(并最终影响到屏幕)。 本例代码将
keyup事件绑定到了数字 0,这可能是最短的模板语句了。 虽然这个语句不做什么,但它满足 Angular 的要求,所以 Angular 将更新屏幕。方式二,最简单
@Component({selector: 'app-key-up2',template: `<input #box (keyup)="onKey(box.value)"><p>{{values}}</p>`})export class KeyUpComponent_v2 {values = '';onKey(value: string) {this.values += value + ' | ';}}
keyup.enter
@Component({selector: 'app-key-up3',template: `<input #box (keyup.enter)="onEnter(box.value)"><p>{{value}}</p>`})export class KeyUpComponent_v3 {value = '';onEnter(value: string) { this.value = value; }}
滚动事件变为被动监听
了解即可
