Angular FormGroup:如何将FormControlname移动到NG-Template外部FormGroupName?
此代码正在工作:
<form id="list" [formGroup]="Form">
<ion-list lines="none" class="list">
<ion-item-sliding formArrayName="things" *ngFor="let item of formArray.controls; index as index">
<ion-item [formGroupName]="index">
<ng-container [ngTemplateOutlet]="thingText" [ngTemplateOutletContext]="{item:item, index:index}"></ng-container>
<ng-template #thingText let-item="item" let-index="index">
<ion-textarea id="thing-text" formControlName="content" auto-grow
value="{{ item.value.content }}"
(click)="activateEditing(index)"
(ionBlur)="leaveTheField(index)"
(keypress)="detectChange(index)"
(ionFocus)="changeScroll(index)" #activeThings>
</ion-textarea>
</ng-template>
</ion-item>
</ion-item-sliding>
</ion-list>
</form>
但是我想将ng-template
移出表格之外。但是,当我这样做时,我会得到错误:必须与父formgroup指令一起使用formControlname。
。
然后,我试图将FormGroup传递到NG-Template:
<ng-container [ngTemplateOutlet]="thoughtText" [ngTemplateOutletContext]="{formGroup: Form, item:item, index:index}"></ng-container>
(...)
<ng-template #thoughtText let-item="item" let-index="index" let-formGroup="formGroup">
<div [formGroup] = "formGroup">
<ion-textarea id="thing-text" formControlName="content" auto-grow
value="{{ item.value.content }}"
(click)="activateEditing(index)"
(ionBlur)="leaveTheField(index)"
(keypress)="detectChange(index)"
(ionFocus)="changeScroll(index)" class="active-text form-control" #activeThing>
</ion-textarea>
</div>
</ng-template>
但它不起作用。我得到了“ eRROR:找不到名称的控制:'content'“
我该怎么做才能将ng-template移出表单之外?
This code is working:
<form id="list" [formGroup]="Form">
<ion-list lines="none" class="list">
<ion-item-sliding formArrayName="things" *ngFor="let item of formArray.controls; index as index">
<ion-item [formGroupName]="index">
<ng-container [ngTemplateOutlet]="thingText" [ngTemplateOutletContext]="{item:item, index:index}"></ng-container>
<ng-template #thingText let-item="item" let-index="index">
<ion-textarea id="thing-text" formControlName="content" auto-grow
value="{{ item.value.content }}"
(click)="activateEditing(index)"
(ionBlur)="leaveTheField(index)"
(keypress)="detectChange(index)"
(ionFocus)="changeScroll(index)" #activeThings>
</ion-textarea>
</ng-template>
</ion-item>
</ion-item-sliding>
</ion-list>
</form>
But I want to move the ng-template
outside the form. However, when I do, I get an Error: formControlName must be used with a parent formGroup directive.
.
Then I tried to pass the formGroup to the ng-template:
<ng-container [ngTemplateOutlet]="thoughtText" [ngTemplateOutletContext]="{formGroup: Form, item:item, index:index}"></ng-container>
(...)
<ng-template #thoughtText let-item="item" let-index="index" let-formGroup="formGroup">
<div [formGroup] = "formGroup">
<ion-textarea id="thing-text" formControlName="content" auto-grow
value="{{ item.value.content }}"
(click)="activateEditing(index)"
(ionBlur)="leaveTheField(index)"
(keypress)="detectChange(index)"
(ionFocus)="changeScroll(index)" class="active-text form-control" #activeThing>
</ion-textarea>
</div>
</ng-template>
But it didn't work. I get the ´Error: Cannot find control with name: 'content'`
What do I have to do to move the ng-template outside the form?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种方法是将
form controlname
传递到ng-template
并使用[formControl]
。见下文。One way is to pass
formControlName
tong-template
and use[formControl]
. See below.