简体   繁体   中英

EventEmitter is not working in Angular 5

I have child controller:

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
    selector: 'select-test',
    templateUrl: 'select-test.component.html',
    styleUrls: ['select-test.component.css']
})
export class SelectTestComponent {
  @Input() model: any;
  @Output() public changeModel: EventEmitter<any> = new EventEmitter<any>();
}

Html:

<input [(ngModel)]="model" (ngModelChange)="this.changeModel.emit(this.model)" />

Parent html:

<p>{{testData}}</p>
<select-test [(model)] = "testData"></select-test>

Why child component doesn't change parent component variable?

Your code should be like this:

Component.ts:

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
   selector: 'select-test',
   templateUrl: 'select-test.component.html',
   styleUrls: ['select-test.component.css']
})
export class SelectTestComponent {
   @Input() model: any;
   @Output() public changeModel: EventEmitter<any> = new EventEmitter();
}

Component.html:

<input [(ngModel)]="model" (ngModelChange)="changeModel.emit(model)" />

Parent.html:

<p>{{testData}}</p>
<select-test [(model)]="testData"></select-test> //TWO-WAY DATA BINDING
<select-test [model]="testData"></select-test> //OR ONE-WAY DATA BINDING

I find solution. Need change changeModel name to modelChange.

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