我正在{{ node.field_date_start.value|date("g:ia") }}
应用程序中设置一个动态扩展面板,默认情况下,我在Angular 7
中显示一个mat-expansion-panel
。现在,我有一个添加按钮,我希望如果用户单击此按钮,则新的mat-accordion
应该以小写形式或4 {{1} }。
我在mat-expansion-panel
类中尝试了此方法,但是它不适用于我。我可能会缺少一些东西。
mat-accordion
我期望将form inputs
与动态rendered2
相加的结果,而<mat-accordion id="quoteAccordion">
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
<!-- -->
Panel Title Here
<!-- -->
</mat-panel-title>
<mat-panel-description>
Panel description here
</mat-panel-description>
</mat-expansion-panel-header>
<!-- Panel Body -->
<div formArrayName="services" *ngFor="let service of services.controls; let i = index">
<mat-form-field appearance="outline" fxFlex="30" class="pr-4">
<mat-label> Description</mat-label>
<input matInput formControlName="title" required>
<mat-error>Description is required!</mat-error>
</mat-form-field>
</div
<!-- /Panel Body -->
</mat-expansion-panel>
<!--
on click of [Add] button
Need to append another expansion
panel with form input here
-->
</mat-accordion>
<!-- Ends Here -->
</div>
<button class="w-100" matTooltip="Add" type="button" mat-raised-button (click)="addAccordion()">
<mat-icon>add</mat-icon> ADD
</button>
包含mat-expansion-panel
。
谢谢!
答案 0 :(得分:0)
我认为这是处理这种情况的好方法。
每当要对User的任何操作(例如单击)创建一组新的输入控件时,请执行以下操作:-
Array
中创建类型为component.ts
的变量,并将空对象推入Array
,因为您想显示默认控件。component.html
在*ngFor
文件中循环访问此变量。Array
将一个空对象推入Array.push(object)
,由于您已经遍历Array
,因此angular将自动添加新控件。让我知道它是否可行
答案 1 :(得分:0)
尝试一下:
Component.html
<button type="button" mat-raised-button color="primary" (click)="addItem()">
<mat-icon>add</mat-icon> ADD
</button>
<mat-accordion>
<mat-expansion-panel *ngFor="let item of items">
<mat-expansion-panel-header>
<mat-panel-title>
{{item.title}}
</mat-panel-title>
<mat-panel-description>
{{item.description}}
</mat-panel-description>
</mat-expansion-panel-header>
<div>details or form here</div>
</mat-expansion-panel>
</mat-accordion>
Component.ts:
export interface myModel{
title?:string;
description?:string;
...
}
items:Array<myModel>=[{title:"default item title" , description:"default item description"}];
addItem(){
// push object that you need to be added into array
this.items.push({title:"new title of item"});
}