使Angular * ngFor绘制两个不同的数据列

时间:2018-03-19 08:53:01

标签: javascript angular

我正在尝试制作一个* ngFor指令,将数据放在两列中,而不是像往常一样只放入一列。我甚至按照我在那里看到的一个例子,但它根本不起作用。让我们从图形部分开始:

我有这个: enter image description here

...但我希望它看起来像这样(所以我可以比以前更多的物品而不会使卡更大): enter image description here

这是我目前拥有的代码,它绝对没有任何内容(它只显示第一张图片):

.left-style{
    float:left;
    width:45%;
}
.right-style{
    float:right;
    width:45%;
}

这使用以下CSS:

import { Component, Input } from '@angular/core';


@Component({
    selector: "card",
    styleUrls: ["./card.css"],
    template: `
    <div class="col card">
      <div class="row card-header">
        {{title}}
      </div>
      <div class="margin">
      <ng-content></ng-content>

    </div>
    `
})

export class Card{

    @Input() title: string;

    constructor(){

    }

}

我知道在这个例子中不需要它,但它只是一个尝试。我很困惑为什么这根本不起作用。在创建的div中,bootstrap类(col-md-6)根本没有被应用。

为什么会这样?

修改

让我稍微展开应用程序的外观,以便轻松找出正在发生的事情。在尝试了其他无法正常工作的方法之后,我想是时候给你一个更广泛的看法,看看它是如何解决这个奇怪的事情。

父组件使用的“卡​​片”就像您在本文中看到的那样。因此,主模板如下所示:

enter image description here

“cards”组件有一个ng-content,它在我提供的另一个组件内部绘制,正如你在父组件的实现中看到的那样。这是卡组件:

$("#p_lt_ctl02_pageplaceholder_p_lt_ctl03_SmartSearchBox1_btnSearch").value = '{%GetResourceString("search")%}';

不知何故,就像我在第一个提出的答案的评论中所说的那样,div不像通常那样编译引导类:

enter image description here

此刻此刻变得非常奇怪。谁能发现这里有什么问题?

3 个答案:

答案 0 :(得分:1)

问题是每个div都有两个class属性,因此Angular只接受后一个类。

只需合并类属性,如:

<div class="left-style col-md-6" *ngIf="i%2 == 0">

这两个课程都将被应用。

您实际上可以使用更少的html并使用ngClass,如下所示

 <div class="col-md-6" [ngClass]="{'left-style': i%2 != 0, 'right-style': i%2 === 0 }">
      <a href="javascript:void(0)" [style.cursor]="cursor(level)"  class="btn-flat white separator" (click)="deselectLevel(level)">
          <i class="fa fa-times">
          </i> 
          {{ level?.label || level }}
        </a>           
  </div>  

答案 1 :(得分:0)

我一直在编辑错误的文件。只是星期一的事情。

抱歉偷你的时间!

答案 2 :(得分:0)

简便方法: 我正在制作Angular演示Tour of Heroes,我想将仪表板数据* ngFor分为两列;(像这样) by ngFor

这是现在对我有用的代码:

<!--repeater creates as many links as
          are in the component's heroes array.-->
    <a *ngFor="let hero of heroes;" routerLink="/detail/{{hero.id}}">       
      <!--ESTE STYLE SIRVE PARA QUE NO SE DEMADRE EL TAMAÑO DE CADA
      DIV, ELLIPSIS AYUDA EN ESTO-->
      <div style="
       width: 50%;
       float: left;
       white-space: nowrap;
       overflow: hidden;
       text-overflow: ellipsis;"
       class="module hero">
          {{hero.name}}            
      </div>         
    </a>