J'utilise bootstrap-select Dropdown sous 2 formes angulaires avec jQuery. Onchange jquery event je souhaite appeler une méthode TypeScript onDrop DownChange Change. Mais ça ne marche pas.
import { Component, OnInit, ViewChild } from '@angular/core';
import { RequestOptions } from '@angular/http';
import 'rxjs/add/observable/throw';
declare var $: JQueryStatic;
export class TestComponent implements OnInit {
selectedValue: string;
ngOnInit(): void {
$(function() {
var self = this;
$('.selectpicker').on('change', function(){
var selectedds = $(this).find('option:selected').val();
self.onDropDownChangeChange(selectedds); //This is not working
//this.onChange();
});
});
}
onDropDownChangeChange(value: string) {
this.selectedValue = value;
this.PopulateGrid(selectedValue);
}
}
Vous confondez les portées. Cela devrait être comme ça:
ngOnInit(): void {
var self = this;
$(function() {
$('.selectpicker').on('change', function(){
var selectedds = $(this).find('option:selected').val();
self.onDropDownChangeChange(selectedds); //This is not working
//this.onChange();
});
});
}
Vous manquez le contexte.
Et pour gérer l'événement personnalisé de la bibliothèque tierce, dans certains cas, vous devez indiquer à Angular d'exécuter votre code après avoir reçu l'événement de la sorte.
constructor(private zone: NgZone) {}
ngOnInit(): void {
var self = this;
this.zone.run(() => {
$('.selectpicker').on('change', function(){
var selectedds = $(this).find('option:selected').val();
self.onDropDownChangeChange(selectedds);
//this.onChange();
});
});
}