从 smartadmin 中的 select2 检索选定的选项
retrieving selected option from select2 in smartadmin
我正在使用 smartadmin
angular 模板。在一种形式中,我使用的 select2
已经作为指令存在于 smartadmin
.
中
import {Directive, ElementRef, OnInit} from '@angular/core';
import {addClassName, removeClassName} from '../../../utils/dom-helpers';
declare var $: any;
@Directive({
selector: '[select2]'
})
export class Select2Directive implements OnInit {
constructor(private el: ElementRef) {
addClassName(this.el.nativeElement, ['sa-cloak', 'sa-hidden'])
}
ngOnInit() {
System.import('script-loader!select2/dist/js/select2.min.js').then(() => {
$(this.el.nativeElement).select2()
removeClassName(this.el.nativeElement, ['sa-hidden'])
})
}
}
我在我的组件模板中使用它,并在从服务器获取数据后将数据添加到 select2
选项中。
<select select2 style="width:100%;" class="select2" [(ngModel)]="selectedContractDetails.name">
<option *ngFor="let symbol of service.symbols" value="{{symbol}}">{{symbol}}</option>
</select>
现在如何从 select2
中获取我 select 的选项的值。我尝试在组件模板中使用 [(ngModel)]
和 (click)
绑定,但这对我不起作用。
为此,您必须使用 ngAfterViewInit
生命周期方法,因为 select2
in smartadmin
是他们定义的指令。对于事件绑定和其他方法,您必须在 ngAfterViewInit
内声明它。代码应该像
ngAfterViewInit(){
$('.select2').on('select2:select', (event) => {
// Code you want to execute when you hit enter in select2 input box
});
}
您也可以使用 JQuery
做到这一点,只需将 Id
添加到 select 标签
<select select2 style="width:100%;" class="select2" id="symbolId" [(ngModel)]="selectedContractDetails.name">
<option *ngFor="let symbol of service.symbols" value="{{symbol}}">{{symbol}}</option>
</select>
在你的ngAfterViewInit()
ngAfterViewInit(){
$('#symbolId').on('change', (event) => {
var symbolSelected= event.target.value;
//you can use the selected value
});
}
我正在使用 smartadmin
angular 模板。在一种形式中,我使用的 select2
已经作为指令存在于 smartadmin
.
import {Directive, ElementRef, OnInit} from '@angular/core';
import {addClassName, removeClassName} from '../../../utils/dom-helpers';
declare var $: any;
@Directive({
selector: '[select2]'
})
export class Select2Directive implements OnInit {
constructor(private el: ElementRef) {
addClassName(this.el.nativeElement, ['sa-cloak', 'sa-hidden'])
}
ngOnInit() {
System.import('script-loader!select2/dist/js/select2.min.js').then(() => {
$(this.el.nativeElement).select2()
removeClassName(this.el.nativeElement, ['sa-hidden'])
})
}
}
我在我的组件模板中使用它,并在从服务器获取数据后将数据添加到 select2
选项中。
<select select2 style="width:100%;" class="select2" [(ngModel)]="selectedContractDetails.name">
<option *ngFor="let symbol of service.symbols" value="{{symbol}}">{{symbol}}</option>
</select>
现在如何从 select2
中获取我 select 的选项的值。我尝试在组件模板中使用 [(ngModel)]
和 (click)
绑定,但这对我不起作用。
为此,您必须使用 ngAfterViewInit
生命周期方法,因为 select2
in smartadmin
是他们定义的指令。对于事件绑定和其他方法,您必须在 ngAfterViewInit
内声明它。代码应该像
ngAfterViewInit(){
$('.select2').on('select2:select', (event) => {
// Code you want to execute when you hit enter in select2 input box
});
}
您也可以使用 JQuery
做到这一点,只需将 Id
添加到 select 标签
<select select2 style="width:100%;" class="select2" id="symbolId" [(ngModel)]="selectedContractDetails.name">
<option *ngFor="let symbol of service.symbols" value="{{symbol}}">{{symbol}}</option>
</select>
在你的ngAfterViewInit()
ngAfterViewInit(){
$('#symbolId').on('change', (event) => {
var symbolSelected= event.target.value;
//you can use the selected value
});
}