【问题标题】:Angular 4 - Compile [ngClass] inside jquery appendAngular 4 - 在 jquery append 中编译 [ngClass]
【发布时间】:2018-01-05 00:14:52
【问题描述】:

我是 Angular 4 的新手,尝试使用 $().append() 方法动态附加 li 内容。我无法编译和使用 [ngClass] 指令

jQuery 将其视为字符串并附加到 DOM。我想编译它动态执行作为角度 4 指令。

下面是包含虚拟数据的数组!

    let listOfAllColumns = [
        { name: "name", active: false },
        { name: "ConnectionType", active: true },
        { name: "Type", active: false },
    ];

使用 jQuery 循环数组

      listOfAllColumns.forEach(item => {
        $(this.sortElement).append("<li><a href= 'javascript:;' [ngClass]='{'activeTick': "+ item.active +"}'>"+ item.name +"</a></li>");
    });

我的 DOM 内容:

<a href="javascript:;" [ngClass]="{" activetick':="" false}'="">name</a>

[ngClass] 被认为是一个字符串有没有办法在角度编译这个语句..!!!

提前致谢

【问题讨论】:

  • 试试这样 [ngClass]="{'activetick' : item.active }"
  • 我想从一个 ts 文件[组件文件]中加载它。符合我的情况。

标签: angular angular2-compiler


【解决方案1】:

首先为什么要使用jQuery 渲染模板。您可以通过循环集合 listOfAllColumns 并渲染类似的模板 collection.length 次以 Angular 方式轻松完成

listOfAllColumns = [
    { name: "name", active: false },
    { name: "ConnectionType", active: true },
    { name: "Type", active: false },
];

HTML

<ul>
    <li *ngFor="let item in listOfAllColumns" 
       [ngClass]="{'activeTick': item.active }">
        {{item.name}}
    </li>
<ul>

【讨论】:

  • 我尝试使用 jquery 的原因是,我已将组件的元素引用共享给其他组件。试图从放置的其他组件加载元素 ref 的内容。内容将来自共享组件。或者有没有其他方法可以实现 tiz。
  • 您可以使用shared-service 将数据共享给组件,并且基于相同的listOfAllColumns 列值将被填充,*ngFor 将在前端完成其工作
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 2018-04-01
  • 2018-03-10
  • 2019-01-20
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
相关资源
最近更新 更多