Angular:如何从 .t​​s 文件渲染 HTML?

use*_*298 5 typescript angular2-template angular

我使用 jQuery dataTable 在列表视图上显示数据。我尝试使用以下方式将数据绑定到 dataTable 。

在 users.component.ts 上

getUsers() {
    this.UserService.getUsersList()
        .subscribe(
        success => {
            this.userList = success;
            $("#userTable").find('tbody').empty();
            var dataClaims = this.userList;
            for (let i = 0; i < dataClaims.length; i++) {
                $('#userTable').dataTable().fnAddData([
                    (i + 1),
                    dataClaims[i].name,
                    dataClaims[i].email,
                    dataClaims[i].contact_number,
                    dataClaims[i].address,
                    '<a [routerLink]="[' +"'"+"../../user/update" +"'" +']"' + ' class="fa fa-1x fa-pencil-square-o"></a>',
                ]);
            }
        }
        );
} 
Run Code Online (Sandbox Code Playgroud)

上述功能正常工作,数据表工作没有问题。

[routerLink]没有转换为 html。在输出中,它显示如下:

<a [routerlink]="['../../user/update']" class="fa fa-1x fa-pencil-square-o"></a>
Run Code Online (Sandbox Code Playgroud)

但它应该转换为以下方式,

<a _ngcontent-c0="" ng-reflect-router-link="user/update" href="/user/update" class="fa fa-1x fa-pencil-square-o"></a>
Run Code Online (Sandbox Code Playgroud)

[routerlink]有人可以解释一下在从 .ts 文件渲染 html 数据时如何转换为普通链接吗?谢谢。

jcm*_*dan 2

如果你真的想使用 dataTable,也许这对你有帮助:

/sf/answers/2728835721/

基本上,您应该创建一个封装数据表逻辑的指令。

import {Directive, ElementRef} from '@angular/core';
import {Input, OnInit}         from '@angular/core';


import { JqueryDataTableEvent } from './jquery-datable-event';
import 'jquery.dataTables';

declare var jQuery:any;

@Directive({
    selector: '[jqueryDatatable]'
})

export class JqueryDatatableDirective implements OnInit {
    private _datatable : any;

    @Input()
    jqueryDatatable: any;

    @Input()
    dataTableEvents: JqueryDataTableEvent[];

    constructor(private _element: ElementRef) {}

    ngOnInit() {
        this.applyOptions();
        this.applyEvents();
    }

    applyOptions()
    {
        if (!this.jqueryDatatable)
            console.error("Empty options array was passed to initialize jqueryDatatable.");

        this._datatable = jQuery(this._element.nativeElement).DataTable( this.jqueryDatatable || {} );

    }

    applyEvents() {
        this.dataTableEvents.map((event)=> {
            this._datatable.on(event.eventName, event.selector, event.callback)
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

有人(@DarioN1)创建并举例如下:

https://plnkr.co/edit/t0Zwc3AtQTt98XvIirZ9?p=preview