Skip to content

Commit af00bcc

Browse files
committed
fix valueChanged #14
1 parent 1d05fd4 commit af00bcc

File tree

9 files changed

+66
-36
lines changed

9 files changed

+66
-36
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,8 @@ Every single demo is separate component. Bellow you can find links to components
113113
- default value
114114
- tags
115115

116+
#### [Demo](https://github.com/tealpartners/ng-select2/tree/master/src/app/demos/value-changed)
117+
- Demo with value changed output to console log
118+
116119

117120
Demo forked from: https://github.com/NejcZdovc/ng2-select2-demo

projects/ng-select2/src/lib/ng-select2.component.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export class NgSelect2Component implements AfterViewInit, OnChanges, OnDestroy,
6464
@Input() options: Options;
6565

6666
// emitter when value is changed
67-
@Output() valueChanged = new EventEmitter();
67+
@Output() valueChanged = new EventEmitter<string | string[]>();
6868

6969
private element: any = undefined;
7070
private check = false;
@@ -104,6 +104,7 @@ export class NgSelect2Component implements AfterViewInit, OnChanges, OnDestroy,
104104

105105
const newValue: string | string[] = this.value;
106106
this.setElementValue(newValue);
107+
this.valueChanged.emit(newValue);
107108
this.propagateChange(newValue);
108109
}
109110

@@ -112,6 +113,7 @@ export class NgSelect2Component implements AfterViewInit, OnChanges, OnDestroy,
112113
const newValue: string = changes['value'].currentValue;
113114

114115
this.setElementValue(newValue);
116+
this.valueChanged.emit(newValue);
115117
this.propagateChange(newValue);
116118
}
117119

@@ -148,8 +150,8 @@ export class NgSelect2Component implements AfterViewInit, OnChanges, OnDestroy,
148150
// const newValue: string = (e.type === 'select2:unselect') ? '' : this.element.val();
149151
const newValue = this.element.val();
150152

153+
this.valueChanged.emit(newValue);
151154
this.propagateChange(newValue);
152-
this.setElementValue(newValue);
153155
});
154156
}
155157

@@ -236,11 +238,10 @@ export class NgSelect2Component implements AfterViewInit, OnChanges, OnDestroy,
236238
}
237239
}
238240

239-
propagateChange = (value: any) => { };
241+
propagateChange = (value: string | string[]) => { };
240242

241243
registerOnChange(fn: any) {
242244
this.propagateChange = fn;
243-
this.valueChanged.subscribe(fn);
244245
}
245246

246247
registerOnTouched() {

src/app/app.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ <h1>ng-select2 demo's</h1>
1414
<app-multiple></app-multiple>
1515
<hr>
1616
<app-custom-array></app-custom-array>
17+
<hr>
18+
<app-value-changed></app-value-changed>
1719
</div>

src/app/app.module.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import { NgModule } from '@angular/core';
2+
import { FormsModule } from '@angular/forms';
23
import { BrowserModule } from '@angular/platform-browser';
34
import { NgSelect2Module } from 'ngSelect2';
45

56
import { AppComponent } from './app.component';
67
import { BasicComponent } from './demos/basic/basic.component';
7-
import { OptionsComponent } from './demos/options/options.component';
88
import { ChangeComponent } from './demos/change/change.component';
9+
import { CustomArrayComponent } from './demos/custom-array/custom-array.component';
910
import { DynamicComponent } from './demos/dynamic/dynamic.component';
1011
import { MultipleComponent } from './demos/multiple/multiple.component';
12+
import { OptionsComponent } from './demos/options/options.component';
1113
import { TemplateComponent } from './demos/template/template.component';
14+
import { ValueChangedComponent } from './demos/value-changed/value-changed.component';
1215
import { DataService } from './services/data.service';
13-
import { FormsModule } from '@angular/forms';
14-
import { CustomArrayComponent } from './demos/custom-array/custom-array.component';
1516

1617

1718
@NgModule({
@@ -23,7 +24,8 @@ import { CustomArrayComponent } from './demos/custom-array/custom-array.componen
2324
DynamicComponent,
2425
TemplateComponent,
2526
MultipleComponent,
26-
CustomArrayComponent
27+
CustomArrayComponent,
28+
ValueChangedComponent
2729
],
2830
imports: [
2931
BrowserModule,

src/app/demos/change/change.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export class ChangeComponent implements OnInit {
1515
return this._value;
1616
}
1717
set value(value: string) {
18+
console.log('set value with ' + value);
1819
this._value = value;
1920
}
2021

src/app/demos/template/template.component.spec.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/app/demos/value-changed/value-changed.component.css

Whitespace-only changes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<h2>8. Value changed</h2>
2+
<ng-select2 [data]="exampleData"
3+
[ngModel]="test"
4+
(valueChanged)="valueChanged($event)"
5+
(ngModelChange)="modelChanged($event)"
6+
[width]="300">
7+
</ng-select2>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { Component, OnInit } from '@angular/core';
2+
import { Select2OptionData } from 'ngSelect2';
3+
4+
@Component({
5+
selector: 'app-value-changed',
6+
templateUrl: './value-changed.component.html',
7+
styleUrls: ['./value-changed.component.css']
8+
})
9+
export class ValueChangedComponent implements OnInit {
10+
public test = 'value-changed-1';
11+
public exampleData: Array<Select2OptionData>;
12+
13+
ngOnInit() {
14+
this.exampleData = [
15+
{
16+
id: 'value-changed-1',
17+
text: 'Value changed 1'
18+
},
19+
{
20+
id: 'value-changed-2',
21+
disabled: true,
22+
text: 'Value changed 2'
23+
},
24+
{
25+
id: 'value-changed-3',
26+
text: 'Value changed 3'
27+
},
28+
{
29+
id: 'value-changed-4',
30+
text: 'Value changed 4'
31+
}
32+
];
33+
}
34+
35+
public valueChanged(event: string) {
36+
console.log('value changed: ' + event);
37+
}
38+
39+
public modelChanged(event: string) {
40+
console.log('model changed: ' + event);
41+
}
42+
}

0 commit comments

Comments
 (0)