角度 5 - 事件发射器(类型上不存在属性'update'...



>我有一个组件,我想在一个人的名字改变时通过发出一个事件来更新它。我的问题是由于错误,代码无法编译。这是我的代码

应用程序表单组件

@Output() nameChange = new EventEmitter();
closeAccordion(isComplete: string, accordionToClose: string, accordion: NgbAccordion) {
if (accordionToClose === 'personal-details-panel') {
this.applicationStatusFlags.personalDetailsStatus = (isComplete === 'true');
this.nameChange.emit({ personId: this.personId });
}
}

应用程序表单组件.html

<name-display
[personId]="personId" 
[placeHolderText]="'Hello'" 
(nameChange)="update($event)">
</name-display>

名称显示组件

import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
import { PersonService } from "../../../service/person.service";
@Component({
selector: 'name-display',
templateUrl: './NameDisplay.component.html',
providers: [PersonService]
})
export class NameDisplayComponent implements OnChanges {
constructor(private readonly personService: PersonService) { }
@Input() personId;
@Input() placeHolderText: string = "";
forename: string = "";
ngOnChanges(changes: SimpleChanges): void {
if (changes["personId"]) {
this.personService.getPersonDetails(this.personId).subscribe((res: IPersonDetails) => {
this.forename = res.forenames;
});
}
};

update(personId: number) {
alert("update name");
this.personService.getPersonDetails(personId).subscribe((res: IPersonDetails) => {
this.forename = res.forenames;
});
}
}

我的问题基本上是当我将角度 cli 与命令 ng 服务器一起使用时 --aot,由于此错误,它无法编译:

ERROR in srcappcomponentApplicationFormApplicationForm.component.html(42,9): : Property 'update' does not exist on type 'ApplicationFormComponent'.

我已经编写了一个类似的组件,它使用没有此问题的事件发射器,所以我坚持如何修复错误。

有什么想法吗?

这是因为您将$event传递给方法。

(nameChange)="update($event)"

但它接受数字。

update(personId: number) {
alert("update name");
}

请按如下方式更改方法。

update(event:any) {
const personId = event as number
alert("update name");
}

相关内容

  • 没有找到相关文章

最新更新