发出的事件无法导致调用绑定方法

问题描述

在下面的代码中,我希望我有一个 EventEmitter 对象,如 onSubmitPost() 方法中所示。当我编译代码时,方法中的日志 onSubmitPost 被显示。但是 onReceiveSubmittedEvtEmitter 方法中的日志永远不会显示。在以下 html 代码

    <app-post-create (onPostSubmittedEvtEmitter)="onReceiveSubmittedEvtEmitter($event)"></app-post-create>

onReceiveSubmittedEvtEmitter 方法应该在事件 onPodtSubmittedEvtEmitter 发出时被执行, 但由于我没有从 onReceiveSubmittedEvtEmitter 方法收到日志,我希望该事件尚未发出。 请让我知道为什么没有发出事件以及如何修复它

post-create.component.ts

//logs in this method are displayed
onSubmitPost(post: Post) {
this.post = {
  title: this.post.title,content: this.post.content
};
this.onPostSubmittedEvtEmitter.emit(this.post);
console.log("onSubmit->: post.title: " + post.title);
console.log("onSubmit->: post.content:" + post.content);
}

post-create.component.html

<form>
<div class="form-group">
  <label>Title</label>
  <input type="text" class="form-control" name="title" required [(ngModel)]="post.title">
</div>
<div class="form-group">
  <label>Content</label>
  <textarea name="content" class="form-control" cols="10" rows="2" required [(ngModel)]="post.content"></textarea>
</div>
<button type="submit" class="btn btn-primary" (click)="onSubmitPost(post)">Create</button>
</form>

app.component.ts

//console logs do not get displayed
import { Component } from '@angular/core';
import { Post } from './post-create/post-create.component';

@Component({
  selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'binding2';
  postsArray: Post[] = [];

  onReceiveSubmittedEvtEmitter(post: Post) {
    this.postsArray.push(post);
    console.log("onReceiveSubmittedEvtEmitter->: post.title: " + post.title);
    console.log("onReceiveSubmittedEvtEmitter->: post.content:" + post.content);
  }
}

app.component.html

<app-post-create (onPostSubmittedEvtEmitter)="onReceiveSubmittedEvtEmitter($event)"></app-post-create>
<app-post-list [postsToAddToList]="postsArray"></app-post-list>

解决方法

我刚刚找到答案,因为我正在尝试解决它。 只需用

装饰EventEmitter
@Output

如下:

  @Output() onPostSubmittedEvtEmitter: EventEmitter<Post> = new 
  EventEmitter<Post>();