我有桌子,tablecell中有select2控件。
在ngAfterViewInit
方法中,我称之为jQuery('.select2Class').select2(...);
我有可能在表格中添加新行
现在代码就像
addNewRow(){
this.rows.push({name:'new row'});
setTimeout(function(){
jQuery('#newSelect2Id').select2(...);
},10);
}
我需要使用setTimeout
,因为没有事件angularReady
我知道它很糟糕,但我不知道如何纠正它。
答案 0 :(得分:3)
不像<select2-input></select2-input>
那样直接使用jQuery,而是创建专用的自定义元素,例如*ngFor
。
然后在组件模板中,您将拥有正常的<tr *ngFor="let row of rows">
<td>
<select2-input
[options]="select2Options"
(select)="row.selectedOption = $even.value"
></select2-input>
</td>
</tr>
指令渲染行。像这样:
OnInit
现在,关于这个自定义元素的实现。最简单的实现只是实现nativeElement
接口并使用$.fn.select2
插件初始化select2:select
。您还可以实现必要的输入和输出,如上例所示,您可能希望将一些select2选项传递给组件并对 <?php
global $post; // READY THE $post FOR USE IN THE setup_postdata() FUNCTION
$field = the_field('category_num');
$args = array( 'numberposts' => 200, 'order'=> 'DESC', 'category' => $field); // NOTICE THE USE OF numberposts RATHER THAN posts_per_page
$postsList = get_posts( $args );
foreach ( $postsList as $post ){
setup_postdata( $post );
}
wp_reset_postdata();
?>
事件作出反应。