0
내가 만든 동적 폼 구성 요소에서 작업하고 있으며 사용중인 사용자 지정 템플릿이 컨텍스트를 올바르게 가져올 수 없습니다. 여기 컨텍스트가 작동하지 않는 각도 4 템플릿
내 NG 템플릿입니다 :<ng-template #defaultTemplate let-field>
<div class="form-group" [ngClass]="!field.isValid() ? 'has-error' : ''">
<label class="control-label" [for]="field.property">{{ field.label }}</label>
<app-dynamic-form-field [formField]="field"></app-dynamic-form-field>
</div>
</ng-template>
그리고 여기 내가 사용하는 방법입니다 :
getContextForTemplate(field: BaseFormField<any>) {
return {
$implict: field
};
}
: 여기
<ng-container *ngFor="let field of formModel.formFields">
<ng-container [ngTemplateOutlet]="fieldTemplate || defaultTemplate" [ngOutletContext]="getContextForTemplate(field)">
</ng-container>
</ng-container>
컨텍스트를 만드는 데 관련된 구성 요소의 타이프 라이터입니다
내가 겪고있는 오류 :
ERROR TypeError: Cannot read property 'isValid' of undefined
양식 필드 개체에는 isValid 메서드가 있지만. 위의 코드를 템플릿으로 사용하지 않고 컨테이너의 * ngFor 내부에서 직접 사용하지 않으면 모든 작업이 제대로 작동합니다.
편집 : 나뿐만 아니라이 코드를 시도하고 작동하지 않는 것 :
이<form>
<ng-template #defaultTemplate let-field>
<div>
{{ field }}
</div>
</ng-template>
<ng-container *ngFor="let field of [1,2,3]" [ngTemplateOutlet]="defaultTemplate" [ngOutletContext]="{ $implict: 'hello' }">
</ng-container>
<ng-content></ng-content>
</form>
필드 속성이 구성 요소에 어떻게 채워 집니까? .isValid()를 호출하면 정의되지 않은 것처럼 보입니다. – Woot
필드가 템플릿으로 사용되지 않으면 필드가 채워지고 작업 중임을 정의합니다. – Shynet
재생산을 제공 할 수 있습니까? – yurzui