查看@input\@output
修饰符的某些代码我发现不同的行为。@input和@output修饰符更改事件
在下面的代码,有counter
部件经由@input
装饰从父app
部件获取其值和经由@output
装饰发射变化。
我的问题:
为什么当我在手动键入文本价值变动事件呼唤,而我只是里面
Increment\Decrement
功能定义this.change.emit(this.count);
。?。 ?当我通过
Increment\Decrement
按钮进行更改,我在app
的组件(父),但得到正确的变化值,当我手动输入值,然后我得到[object Event]
没有输入号码。为什么这样 ?
代码如下Plunker is here.
计数器组件:
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'counter',
template: `
<div class="counter">
<button (click)="decrement()">
Decrement
</button>
<input type="text" [(ngModel)]="count">
<button (click)="increment()">
Increment
</button>
</div>
`
export class CounterComponent {
@Input()
count: number = 0;
@Output()
change: EventEmitter<number> = new EventEmitter<number>();
increment() {
this.count++;
this.change.emit(this.count);
}
decrement() {
this.count--;
this.change.emit(this.count);
}
}
应用组件:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<div class="app">
<counter
[count]="myCount"
(change)="countChange($event)">
</counter>
</div>
`
})
export class AppComponent {
myCount: number = 10;
countChange(event) {
console.log(event); //log Event object below
console.log('change called...!!!');
this.myCount = event;
}
}
我试图输入类型更改为number
以及也改变绑定到1方式:[ngModel]="count"
但似乎没有工作。
console.log(event);
事件{isTrusted:真实,键入: “变化”,目标: input.ng-untouched.ng-valid.ng脏,currentTarget当前:计数器, 的EventPhase:3 ...}
比'change'以外的东西更换事件名称。它是冒泡的标准事件https://plnkr.co/edit/kcRcSh8tAt4BMt81GvP0?p=preview – yurzui
@yurzui:谢谢!! ..,请发表您的评论作为答案,我会标记它.. – anoop