【问题标题】:Use *ngFor in typescript file in Angular 9在 Angular 9 的打字稿文件中使用 *ngFor
【发布时间】:2021-02-04 06:20:29
【问题描述】:

在 Angular 9 的打字稿文件中使用 *ngFor

在打字稿中使用 *ngfor 而不是在 html 文件中

async printString(orderObject) {
    let html = '';
    return orderObject.reduce(async (lastPromise: any, order: any, j: any) => {
        lastPromise;

        var date = order.timeStamp.seconds*1000;
        var orderDate = this.datePipe.transform(date, 'MM/dd/yyyy , h:mm a');

        html = html +
        `
        <table>
          <tr style="border: 0px">
              <td>
                <div> <img style ="height: 80px;width: 80px;" src= 'assets/icon/shivam64.png'> </div>
              </td>
              <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></td><td></td>
              <td>
              </td>
              <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></td><td></td>
              <td>
                  <STRONG> Client Information </STRONG>
                  <div><STRONG>Mobile : </STRONG> +919826598620 </div>
                  <div><STRONG>Date : </STRONG> ${orderDate} </div>
              </td>
          </tr>
        </table>
        <br/>

        <table>
          <tr style="border: 0px">
              <td>
              <STRONG> Client Information </STRONG>
              <div> ${this.customerData.name} </div>
              <div> ${this.customerData.address} </div>
              </td>
              <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></td><td></td>
              <td>
              </td>
              <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></td><td></td>
              <td>
                  <STRONG> Order Details </STRONG>
                  <div><STRONG>Order Id : </STRONG>${order.orderId}</div>
                  <div><STRONG>Delivered By : </STRONG>${order.creatorName}</div>
                  <div><STRONG>Collected By : </STRONG>
                    <span *ngIf="gasData.collectedBy">
                      ${order.collectedBy.name} -
                      (${order.collectedBy.contact})
                    </span>
                  </div>
              </td>
          </tr>
        </table>
        <br/>

        <br/>
        <table>
          <tr>
              <th>S.No</th>
              <th>Description of Gas</th>
              <th>Size</th>
              <th>Total Collected</th>
              <th>Total Delivered</th>
              <th>Total Volume</th>

          </tr>

          <tr>
            <td>
              <ul style="list-style: none;padding: inherit;">
                <li style="margin: 5px auto;" *ngFor="let orderData of order.totalDelivered; let last = last;">
                    ${j+1}
                </li>
              </ul>
            </td>
            <td>
              <ul style="list-style: none;padding: inherit;">
                <li style="margin: 5px auto;" *ngFor="let orderData of order.totalDelivered;">
                    <span [ngStyle]="{color: ${this.getColor(this.gasData.type)}}">
                        {{orderData.type}}
                    </span>
                </li>
              </ul>
            </td>
          </tr>
        </table>
      
        `
        return await html;
    }, Promise.resolve());
  }

美好的一天,我只是想知道是否可以在打字稿中执行 *ngFor 的逻辑?我想循环打字稿中的数据,就像 *ngFor 在 HTML 中所做的那样。希望您能够帮助我。提前谢谢你。

【问题讨论】:

  • 您所做的是反模式。通过使用 Angular,您的组件/服务逻辑不应对模板负责。使用组件模板中的数据绑定获取数据并显示它。
  • 你不能这样做,因为只有模板支持角度指令

标签: angular typescript ionic-framework angular9 ionic5


【解决方案1】:

如果我理解你的问题。您可以使用foreach 函数或for of 关键字。

例子:

const array = [3, 4, 5, 6];

array.forEach(elem => {
  console.log(elem);
});

for (let elem of array) {
  console.log(elem);
}

【讨论】:

    【解决方案2】:

    你不能那样做。 Angular 编译模板 + ts 文件并生成纯 html 和 javascript。您必须将 html 放在单独的文件中,并从 ts 文件中与之交互。

    【讨论】:

    • 这就是为什么我不喜欢 Angular 为 HTML 模板发明的抽象。他们基本上是在重新实现 Javascript 功能的子集而没有优势。我更喜欢使用 JS/TS 从状态呈现 HTML 的函数。 React 中的代码更短,没有多余的抽象。
    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多