Angular 5 - источник событий (свойство 'update' не существует для типа ....) - PullRequest
0 голосов
/ 29 июня 2018

У меня есть компонент, который я хочу обновить, когда имя человека изменяется при отправке события. Моя проблема в том, что код не компилируется из-за ошибки. Это мой код

ApplicationFormComponent

@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 });
    }
}

ApplicationFormComponent.html

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

NameDisplayComponent

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;
    });
  }

}

Моя проблема в основном, когда я использую angular cli с командой ng server --aot, она не компилируется из-за этой ошибки:

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

Я написал аналогичный компонент, использующий генератор событий, у которого нет этой проблемы, поэтому я застрял в том, как исправить ошибку.

Есть идеи?

1 Ответ

0 голосов
/ 29 июня 2018

Это потому, что вы передаете $ событие методу.

(nameChange)="update($event)"

Но он принимает число.

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

Пожалуйста, измените метод, как показано ниже.

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