簡體   English   中英

在ngFor內部動態添加錨定名稱組件

[英]Add anchored name components dynamically inside a ngFor

我正在開發一個Angular 2+應用程序,並且試圖根據需要動態生成盡可能多的Material Datepicker (對於我將在FormArray中生成的每個輸入一個)。

<form [formGroup]="varDataForm" (ngSubmit)="onSubmit()" novalidate>
    <div formArrayName="aggLevels"
            *ngFor="let agLevel of varDataForm.get('aggLevels')?.controls; let aggLevelRow = index;">
        <div [formGroupName]="aggLevelRow">
            <label>{{agLevel?.get('aggregationLevelName')?.value}}</label>
            <div formArrayName="variableDataForLevel"
                    *ngFor="let vardata of agLevel.get('variableDataForLevel')?.controls; let rowIndex = index;">
                <div [formGroupName]="rowIndex">
                    <select formControlName="variableDataId">
                        <option *ngFor="let gs1 of gs1AIs" [value]="gs1.id">{{gs1.description}}</option>
                    </select>
                    <input formControlName="value" placeholder="Valor" [matDatepicker]="myDatepicker-{{rowIndex}}">
                    <mat-datepicker #myDatepicker-{{rowIndex}}></mat-datepicker>
                    <div class="error" *ngIf="vardata.get('value').hasError('required') && vardata.get('value').touched">
                        Obligatorio
                    </div>
                    <button type="button" class="btn" (click)="deleteRow(aggLevelRow, rowIndex)" [disabled]="disableDelete(aggLevelRow, rowIndex)">Borrar</button>
                </div>
            </div>
            <button type="button" class="btn" (click)="addRow(aggLevelRow)" [disabled]="disableAdd()">A&ntilde;adir</button>
        </div>
    </div>
    <button *ngIf="varDataForm.get('aggLevels')?.controls?.length > 0" type="submit" class="btn btn-success" [disabled]="disableSubmit()">Guardar cambios</button>
</form>

我嘗試使用:

<input formControlName="value" placeholder="Valor" [matDatepicker]="myDatepicker-{{rowIndex}}">
<mat-datepicker #myDatepicker-{{rowIndex}}></mat-datepicker>

但是我得到一個錯誤:

NodeInvocationException: Template parse errors:
Parser Error: Got interpolation ({{}}) where expression was expected at column 13 in [myDatepicker-{{rowIndex}}] in ng:///AppModuleShared/VarDataComponent.html@24:59 ("scription}}</option>
</select>
<input formControlName="value" placeholder="Valor" [ERROR ->][matDatepicker]="myDatepicker-{{rowIndex}}">
<mat-datepicker #myDatepicker-{{rowIndex}}></ma"): ng:///AppModuleShared/VarDataComponent.html@24:59

但是我不能使用一個以上的輸入。

您知道一種為每個<input formControlName="value" placeholder="Valor" [matDatepicker]="myDatepicker">生成<mat-datepicker #myDatepicker></mat-datepicker> <input formControlName="value" placeholder="Valor" [matDatepicker]="myDatepicker">嗎?

期望代碼中沒有其他錯誤,因此您無需創建動態模板引用變量,它在迭代中應該可以正常工作,因此請嘗試:

<input formControlName="value" [matDatepicker]="myDatepicker">
<mat-datepicker #myDatepicker></mat-datepicker>

StackBlitz

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM