Angular 按键事件的第一个值未定义
Angular keypress event's first value is undefined
我正在为我的项目使用 Angular 11。在此项目中,尝试通过更改子组件输入字段中的值将值从子组件发送到父组件。
这里是子组件
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.scss']
})
export class ChildComponent implements OnInit {
name: string;
constructor() { }
ngOnInit(): void {
}
@Output() onChanged = new EventEmitter<boolean>();
@Output() onChangedName = new EventEmitter<string>();
change(increased: any) {
this.onChanged.emit(increased);
}
changeName(name: string) {
this.onChangedName.emit(name);
console.log(this.name);
}
}
child.component.html
<input type="text"
[(ngModel)]="name"
(keypress)="changeName(name)">
和父组件
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.scss']
})
export class AppComponent implements OnInit{
clicks: number = 0;
name: string;
ngOnInit() {
}
onChanged(increased: any) {
console.log(increased);
increased === true ? this.clicks++ : this.clicks--;
}
onChangedName(name: string) {
this.name = name;
}
}
parent.component.html
<h3>{{name}}: name</h3>
<app-child
(onChangedName)="onChangedName($event)"
(onChanged)="onChanged($event)"></app-child>
我需要从子组件中发出值并在父组件中显示它,但它似乎工作不正常,因为第一个值是 'undefined' 并且在其余输入的名称之后少了一个字母。
我该如何解决?
改为监听模型更改:
<input type="text"
[(ngModel)]="name"
(ngModelChange)="changeName(name)">
我正在为我的项目使用 Angular 11。在此项目中,尝试通过更改子组件输入字段中的值将值从子组件发送到父组件。
这里是子组件
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.scss']
})
export class ChildComponent implements OnInit {
name: string;
constructor() { }
ngOnInit(): void {
}
@Output() onChanged = new EventEmitter<boolean>();
@Output() onChangedName = new EventEmitter<string>();
change(increased: any) {
this.onChanged.emit(increased);
}
changeName(name: string) {
this.onChangedName.emit(name);
console.log(this.name);
}
}
child.component.html
<input type="text"
[(ngModel)]="name"
(keypress)="changeName(name)">
和父组件
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.scss']
})
export class AppComponent implements OnInit{
clicks: number = 0;
name: string;
ngOnInit() {
}
onChanged(increased: any) {
console.log(increased);
increased === true ? this.clicks++ : this.clicks--;
}
onChangedName(name: string) {
this.name = name;
}
}
parent.component.html
<h3>{{name}}: name</h3>
<app-child
(onChangedName)="onChangedName($event)"
(onChanged)="onChanged($event)"></app-child>
我需要从子组件中发出值并在父组件中显示它,但它似乎工作不正常,因为第一个值是 'undefined' 并且在其余输入的名称之后少了一个字母。 我该如何解决?
改为监听模型更改:
<input type="text"
[(ngModel)]="name"
(ngModelChange)="changeName(name)">