【问题标题】:Is there way to use interpolation inside *ngFor有没有办法在 *ngFor 中使用插值
【发布时间】:2017-12-08 18:01:04
【问题描述】:
<div *ngFor="let t of {{randomName}}"></div>

我想动态传递数组名称,我尝试了上面的代码,但我得到了错误。

感谢您的回答,但我必须用我的场景更新问题

<div formArrayName="{{obj.key}}">
 <div *ngFor="let t of formGrp.controls.{{obj.key}}.controls"></div>
</div>

我正在动态创建表单数组,它可以根据架构具有任何名称。我可以将该动态名称绑定到 formArrayName,因为它支持插值,但我也需要在循环上具有相同的行为

【问题讨论】:

  • 错误是什么?你不需要添加interpolation 没有它本身就可以工作

标签: angular typescript angular2-directives


【解决方案1】:

使用方括号符号应该很容易:

<div *ngFor="let t of formGrp.controls[obj.key].controls"></div>
                                      ^^^^^^^^^

Stackblitz Example

【讨论】:

    【解决方案2】:

    &lt;div *ngFor="let t of getTheData()"&gt;&lt;/div&gt;

    getTheData 是组件中返回数据的方法

    https://plnkr.co/edit/Ma66tJhpldYY4GuuM3uU?p=preview.component.ts 中查看示例

    【讨论】:

    • 如果你这样做,最好使用 get 访问器而不是函数。 html:&lt;div *ngFor="let hero of heroes"&gt;&lt;/div&gt;ts:get heroes() { return this._heroes; }更好的可读性
    【解决方案3】:
    <div *ngFor="let t of dynamicArr"></div>
    

    您可以做的是在组件中动态设置数组。而不是使用字符串插值。

    export class SomeClass {
       dynamicArr:[];  
       updateArr(){
         // some logic
       return this.dynamicArr = dynamic Array
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 2013-11-03
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多