انگولار - EventEmitter از فرزند به والد کار نمیکند


من نیاز دارم یک مقدار (0) را به یک کامپوننت والد ارسال کنم، بنابراین یک کامپوننت فرزند را به شکل زیر فراخوانی میکنم:

<app-componentadduser [target]="target" *ngIf="opt==1" (newItemEvent)="changeOpt($event)"></app-componentadduser>

و کد برای changeOpt:

changeOpt(newItem: number) {
    console.log(newItem)
    this.opt = newItem;
  }

در سمت کودک،

@Input() target: string;
  @Output() newItemEvent = new EventEmitter<number>();

سپس وقتی یک دکمه کلیک میشود و پس از انجام یک فرآیند:

this.newItemEvent.emit(0);

از والد، من حتی سعی میکنم newItem را console.log کنم (مقدار آن ۰ است) اما changeOpt هرگز اجرا نمیشود.

نمیدانم چه چیزی را از دست دادهام. فکر میکردم *ngIf چیزی با آن داشته باشد، اما ندارد.

متشکرم.

بهروزرسانی:

Console.log این خطا را میاندازد:

TypeError: ctx_r9.changeOpt یک تابع نیست. (در ''ctx_r9.changeOpt($event)'', ''ctx_r9.changeOpt'' تعریف نشده است)

پاسخ شماره ۱

چون شما فقط یک عدد را ارسال میکنید، امتحان کنید

(newItemEvent)="opt=$event"

پاسخ شماره ۲

قبل از هر چیز، من نمیدانم شما کجا این this.newItemEvent.emit(0); را صدا میکنید.

پس ممکن است که با این روش مشکلی وجود داشته باشد. شما باید آن را به عنوان مثال روی یک دکمه یا روی یک عمل خاص فراخوانی کنید. بقیه چیزها به نظر درست میآید، اما شاید من نابینام :D

به هر حال، من یک مثال stackBlitz با خروجی شما ایجاد کردم و همه چیز کار میکند. نگاه کنید.

نمونه