角度变换数据与NgStyle和属性绑定(或其他)

时间:2018-03-04 23:16:44

标签: javascript html css angular typescript

即时通讯在Angular中学习编程,我遇到了属性绑定问题。但首先是我的代码部分:

// TS FILE

data[
{"id": "1", "name": "tester", "rev": "1"},
{"id": "2", "name": "tester", "rev": "1"},
{"id": "3", "name": "tester", "rev": "1"},
];


createNumberArray(): number[] {
// code to fill array
return anyArrayOfNumbers
}
<div  *ngFor="let datas of data; let i = index" >


    <ul>
  <li class='list-item' [id]= datas.id [ngStyle]="{ 'transform': 'rotate( numberArray[i] deg) translate(0,-100px) rotate(-numberArray[i]deg)' }">
     <!-- how it would work: <li class='list-item' [id]= datas.id [ngStyle]="{ 'transform': 'rotate(200deg) translate(0,-100px) rotate(-150deg)' }"> -->
            <div class='label1'><img alt='notfound' class='img2' src='any icon'></div>
            <div class='label2'>
                {{ datas.name }}
            </div>
            <div class='label3'>
                {{ datas.id }}
            </div>
            <div class='label4'>
                {{ datas.rev }}
            </div>
        </li>
    </ul>
</div>

data属性包含一个对象数组,我想列出每个Object的名字,id和rev。我可以显示它们,但现在我也希望它们动态旋转。所以我创建了一个新的数字数组,它来自一个名为createNumberArray()的函数。并且这些数字应告诉ngStyle每个循环运行哪个数字他应该旋转。这就是我想成为的样子:

<li class='list-item' [id]= datas.id [ngStyle]="{ 'transform': 'rotate( numberArray[i] deg) translate(0,-100px) rotate(-numberArray[i]deg)' }">

但那不起作用,因为我无法让它设法工作,我尝试使用属性绑定,但从来没有从变换中的数组中获取数字。 这就是代码如何工作(始终只有相同的数字):

<!-- how it would work: <li class='list-item' [id]= datas.id [ngStyle]="{ 'transform': 'rotate(200deg) translate(0,-100px) rotate(-150deg)' }"> -->

我设法用Js,Jquery和html完成了这项工作,但现在我想用Angular来做。而且没有Jquery,所以我不要复制过去的旧代码。但我有点困惑,如果我将来应该在Angular中使用Jquery。什么是制造DOM的最佳方式,你们认为是什么?

我真的很感谢你的帮助。我已经感谢您花时间阅读我的问题了。

1 个答案:

答案 0 :(得分:1)

首先,在构造函数中设置数组值:

打字稿:

filter <- apply(expressionMatrix, 2, function (x) (colIQRs(x, na.rm = TRUE) < 1.6))

然后从html调用getNumberArray方法:

<强> HTML

  ...
  anyArrayOfNumbers: number[] = [];
  constructor() {
    for (let i = 0; i < this.data.length; i++) {
      this.anyArrayOfNumbers.push(200);
    }
  }

  getNumberArray(index): number {
    return this.anyArrayOfNumbers[index];
  }

<强> DEMO