当前位置: 首页 > 知识库问答 >
问题:

如何在不创建数组来生成矩阵UI模式的情况下使用NgFor

万俟英锐
2023-03-14

我想实现UI矩阵模式,它应该动态生成。通过接收输入参数,它应该决定什么是UI矩阵模式维度:例如9X3元素:模式9X3要素

我使用Angular2.js、typescript和SCSS。

html模板和。ts外观:

import {Component, Input, OnInit} from 'angular2/core';
import {NgFor} from 'angular2/common';

@Component({
  selector   : 'game-pattern',
  moduleId   : module.id,
  templateUrl: 'game-pattern.component.html',
  styleUrls  : ['game-pattern.component.css'],
  directives : [NgFor],
})
export class GamePatternComponent implements OnInit {
  @Input('CardType') public cardType: number;

  public horizontalElementLocation: number;
  public verticalElementLocation: number;
  public rows: number[]     = [];
  public elements: number[] = [];
  public y: number;
  public x: number;

 // public cardType = 3;
 constructor() {
    this.cardType = 3;
  }

  public ngOnInit() {
    console.log('cardType ' + this.cardType);
    this.chooseGamePattern();
  }

  public chooseGamePattern() {
    if (this.cardType === 3) {
      this.horizontalElementLocation = 9;
      this.verticalElementLocation   = 3;
    }

    for (this.y = 0; this.y < this.verticalElementLocation; this.y++) {
      this.rows[this.y] = 0;
      for (this.x = 0; this.x < this.horizontalElementLocation; this.x++) {
        this.elements[this.x] = 0;
      }
    }
  }
}
<div id="game-pattern" >
  <div class="pattern-row" *ngFor="#row of rows">
    <div class="big-circle" *ngFor="#elemnt of elements"> 
      <div class="small-circle"></div>
    </div>
  </div>
</div>

** 此代码无法在此环境中运行:)*

问:如何在不创建数组来生成 UI 的情况下使用 NgFor。我的意思是,如果我收到输入x = 9和y = 3,它应该构建9X3的UI矩阵模式。请告知:)

共有2个答案

吴高畅
2023-03-14

构建数组只是为了迭代它们似乎很奢侈。创建一个指令来替换ngFor是多余的。

<div *ngFor="let i of 30|times">{{ i }}</div>
商辰钊
2023-03-14

创建重复模板 N 次的自定义结构指令

import {TemplateRef, ViewContainerRef, Directive, Input} from 'angular2/core';

@Directive({
   selector: '[mgRepeat]'
})
export class mgRepeatDirective {
   constructor(
       private _template: TemplateRef,
       private _viewContainer: ViewContainerRef
   ) { }

   @Input('mgRepeat')
   set times(times: number) {
       for (let i = 0; i < times; ++i)
           this._viewContainer.createEmbeddedView(this._template);
   }
}

按如下方式使用

<div id="game-pattern" >
  <div class="pattern-row" *mgRepeat="verticalElementLocation">
     <div class="big-circle" *mgRepeat="horizontalElementLocation"> 
        <div class="small-circle"></div>
     </div>
 </div>
</div>
 类似资料:
  • 假设我在java中有一个主类,它接收一个矩阵[][],比如: ` '然后用户输入输入: 我知道这是一个5x5的矩阵,但只是因为我看到了用户输入的内容,我如何获得矩阵的大小- 我什么也没试过,我是Java初学者,所以请耐心等待。

  • 我为我的系统创建了一些报告,该报告由许多表组成。为此,我创建了一个带有@Entity注释的域类,并实现了一个JpaRepository存储库,我将本机查询与@query一起使用,如下所示。 我的问题是,对于每个域类,hibernate都在创建一个表,如何停止它? 我的域类: 我的存储库:

  • 本文向大家介绍如何在不使用HTML的情况下创建网站?,包括了如何在不使用HTML的情况下创建网站?的使用技巧和注意事项,需要的朋友参考一下 如果您不了解HTML或CSS,并且想创建一个网站,那么不用担心,您可以轻松创建网站,而无需编写一行HTML代码。 以下是一些无需编写任何HTML或代码行即可构建网站的方法: 网站构造函数 当您购买网站托管计划时,托管公司将为您提供免费的网站构建器选项,以轻松创

  • 问题内容: 使用这样的地理数据记录: 我想输出类似这样的内容,其中它以矩阵形式显示START / END配对: 我可以看到如何以及将如何找到数据,但是我对如何显示为矩阵一无所知。有人有什么想法吗? 问题答案: 这似乎可以解决问题,并在PostgreSQL 9.1上进行了测试。几乎肯定会需要对它进行调整以使其适合SQL Server(任何人都可以随时更新我对此的回答)。 但是请注意,我的输出与您的输

  • 问题内容: 我如何在 不 使用以下代码的 情况下 隐藏/删除TextField组件中的下划线: 我想用道具,并根据文档:https : //material- ui.com/api/input/ 我应该能够更改下划线道具,但是它不起作用。 问题答案: 这是您的操作方式: 我怎么知道的? 您已链接到文档,该文档确实具有支持。 但是,您正在使用组件: 重要的是要了解,文本字段是以下组件之上的简单抽象:

  • 本文向大家介绍如何使用HTML5创建转换矩阵?,包括了如何使用HTML5创建转换矩阵?的使用技巧和注意事项,需要的朋友参考一下 HTML5 canvas提供了允许直接修改转换矩阵的方法。转换矩阵最初必须是身份转换。然后可以使用转换方法对其进行调整。 S号 方法和说明 1 变换(m11,m12,m21,m22,dx,dy) 此方法更改转换矩阵以应用参数指定的矩阵。 2 setTransform(m1