我有一个子组件,我从中传递数据并在父组件中显示。父组件向它传递一个数字和一个 eventEmitter 以允许父组件显示由子组件更新的数据。
父组件
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
{{ myCount }}
<app-message-creator
(change)="countChange($event)"
[count]="myCount"
>
</app-message-creator>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'App2';
myCount: number = 0;
newMessage: string = "";
constructor() { }
countChange(event) {
this.myCount = event;
}
}
子组件 消息创建者
import { Component, Output, Input, EventEmitter } from '@angular/core';
@Component({
selector: 'app-message-creator',
template: `
<p>message-creator works!</p>
<button (click)="increment()">+</button>
<button (click)="decrement()">-</button>
<input type="text">
`
})
export class MessageCreatorComponent {
messageBox;
@Input() count: number;
@Output() change: EventEmitter<number> = new EventEmitter<number>();
increment() {
this.count++;
this.change.emit(this.count);
}
decrement() {
this.count--;
this.change.emit(this.count);
}
}
然后我计划让消息创建器组件让用户输入一条消息,它将显示在主组件中。我添加了一个<input type=text>
, 但现在如果我在输入框中输入任何文本并且光标离开该框,countChange
则会触发事件并且传递event
的是类型[Object Event]
,它会破坏count
父容器中的变量。
我意识到我可以在 countChange 函数中添加一个 if 语句,但我认为我做错了什么。