简体   繁体   中英

In Angular can I use @Input as event emitter

I like to explore the feasibility with using component Input as Event output, similar to how react does it.

Parent component

parentHandler(message){
   console.log(message)
}

Parent html

<child [myEvent]="parentHanlder"></child>

Child component

@Input myEvent

ngOnInit(){

this.myEvent('hello')

}

I am wondering if there are disadvantage or potential issue with this approach eg memory/performance

thank you

You can use setter in this situation

Parent:

<child [myEvent]="parentHanlder"></child>

Child (ts):

@Input()
set myEvent(parentHandler: string) {
     this.myEvent('hello');
}

This will work perfectly as expected.

The behavior will be similar to @Output except the context of execution.

The scope of execution will be with child component

export class AppComponent {
 version: number = 7;
  messageMe(param){
    alert("Message Me.."+param+this.version); 
  }
}

<framework
[messageHandler]="messageMe"></framework>


export class FrameworkComponent implements OnInit {
  @Input()
  messageHandler: Function;

  name="Jone";

  ngOnInit() {
    this.messageHandler(this.name);
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM