首页 > 解决方案 > 对象字面量只能指定已知属性,而“设置”类型中不存在“选择”

问题描述

当我尝试用 Angular 编写这个 javascript 代码时,我错过了什么?

 ngOnInit() {


  $('#jithesh').DataTable( {
    columnDefs: [ {
        orderable: false,
        className: 'select-checkbox',
        targets:   0
    } ],
    select: {
        style:    'os',
        selector: 'td:first-child'
    },
    order: [[ 1, 'asc' ]]
} );

这是原始的java脚本

$(document).ready(function() {
    $('#example').DataTable( {
        columnDefs: [ {
            orderable: false,
            className: 'select-checkbox',
            targets:   0
        } ],
        select: {
            style:    'os',
            selector: 'td:first-child'
        },
        order: [[ 1, 'asc' ]]
    } );
} );

尝试遵循此示例中的内容

https://datatables.net/extensions/select/examples/initialisation/checkbox.html

标签: javascriptangular

解决方案


  1. 如果可以的话,避免使用 Angular 的 jQuery

  2. 运行 jQuery 时,您的元素不在 DOM 中ngOnInit()。相反,将您的代码ngOnInit()ngAfterViewInit().

演示:https ://stackblitz.com/edit/angular-mn2776

此演示向您展示document.getElementById('id').outerHTML了组件初始生命周期钩子的结果:

  • ngOnInit()- 不明确的
  • ngAfterContentInit()- 不明确的
  • ngAfterViewInit()- 外层HTML

使用的代码:

  ngOnInit() {
    this.onInit = this.getOuterHtml();
  }

  ngAfterContentInit() {
    this.afterContentInit = this.getOuterHtml();
  }

  ngAfterViewInit() {
    setTimeout(() => {
      this.afterViewInit = this.getOuterHtml();
    })    
  }

  private getOuterHtml() {
    const el = document.getElementById('el');
    return el ? el.outerHTML : 'undefined';
  }

文档:https ://angular.io/guide/lifecycle-hooks


推荐阅读