Я использую angular 13 для создания пользовательского события. Но мой излучатель событий не срабатывает.Пожалуйста, дайте мне знать причину этого

#angular #events #custom-events

Вопрос:

Ниже приведен код дочернего компонента, компонента после создания и родительского компонента, компонента приложения. Я использую angular 13 и запускаю его в операционной системе Ubuntu. Я хочу создать пользовательское событие, когда нажимается кнопка, указанная в дочернем компоненте, выполняющая функцию, указанную в родительском компоненте, при возникновении этого события. Похоже, что событие не срабатывает.


Html дочернего компонента

 lt;mat-cardgt;  lt;mat-form-field appearance="fill"gt;  lt;mat-labelgt;Enter Post Titlelt;/mat-labelgt;  lt;input matInput type="text"   [(ngModel)]="titlevalue"gt;  lt;/mat-form-fieldgt;  lt;mat-form-field appearance="fill"gt;  lt;mat-labelgt;Enter Post Contentlt;/mat-labelgt;  lt;textarea matInput rows="5" [   (ngModel)]="contentvalue"gt;lt;/textareagt;  lt;/mat-form-fieldgt; lt;/mat-cardgt; lt;button color="accent" mat-raised-button  (click)="onAddPost()"gt;Save Postlt;/buttongt;  

Файл TS дочернего компонента

 import { Component, EventEmitter, Output} from  '@angular/core';  import {Post} from '../post.model' @Component({  selector: 'post-create',  templateUrl:'./post-create.component.html',  styleUrls:['./post-create.component.css']  })  export class postcreatecomponent {    titlevalue: any;  contentvalue: any;  @Output()  posted: EventEmitterlt;Postgt;=new EventEmitterlt;Postgt;   ();  onAddPost(){  const post:Post={  title:this.titlevalue,  content:this.contentvalue  };  this.posted.emit(post);   }  }  

Родительский HTML-файл

 lt;headergt;lt;/headergt; lt;maingt;  lt;post-create (posted)="onPostAdded($event)"gt;   lt;/post-creategt;  lt;output-post [posts]="storedPosts" gt;lt;/output-   postgt;  lt;/maingt;  

Родительский файл TS

 import { Component } from '@angular/core'; import { Post } from './posts/post.model'; @Component({  selector: 'app-root',  templateUrl: './app.component.html',  styleUrls: ['./app.component.css'] }) export class AppComponent{  storedPosts:Post[]=[]  onPostAdded(post:Post){  this.storedPosts.push(post);   } }  

Комментарии:

1. Где именно происходит сбой?, вы проверили с помощью console.log(), какие события запускаются, а какие нет.

2. Пользовательское событие, опубликованное, не отправляется. Метод onAddPost() выполняется, но метод onPostAdded() не выполняется.

3. Я решил проблему, на самом деле я включил дочерний компонент в начальную загрузку в главном приложении. Он заработал, как только я его удалил.