2017-05-27 119 views
2

我想將數據綁定到Angular 4中的ng-container。 組件加載罰款,但是當我添加[componentData] =「測試」我得到錯誤Angular 4:ngComponentOutlet - 數據綁定

<ng-container *ngComponentOutlet="components.name" [componentData]="testing"> 
</ng-container> 

錯誤

Error: Template parse errors: 
Can't bind to 'componentData' since it isn't a known property of 'ng-container'. 
1. If 'componentData' is an Angular directive, then add 'CommonModule' to the '@NgModule.imports' of this component. 
2. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("'Textarea' "> 
             <ng-container *ngComponentOutlet="widget.widgetComponent.component" [ERROR ->][componentData]="testing"> 
             </ng-container> 
          </div> 

難道你真的不能將數據綁定到ngComponentOutlet?

+0

你有' ng-container'用於'template'的情況。 '[componentData]'是一個自定義的@Input()'屬性,它不可用作輸入。 – Aravind

+0

看看https://stackoverflow.com/questions/44281288/reflectiveinjector-is-not-instantiating-component-correctly-with-ngcomponentoutl下面是一個替代方案https://stackoverflow.com/questions/42522633/angular- 4-assign-input-for-ngcomponentoutlet-dynamic-created-component – yurzui

回答

1

爲了解決這個問題,你可以創建自定義組件

'custom-ng-container' 

@Input() componentName : any; 
@Input() componentData : any[]; 

HTML看起來像

<ng-container *ngComponentOutlet="componentName" > 

</ng-container> 

您應該使用在父組件作爲

<custom-ng-container [componentName]="components.name" [componentData]="testing"> </custom-ng-container> 
+0

因此,您不能:( –

+0

yup。您有使用'* ngContainer'的侷限性 – Aravind

+0

您是否可以更新您的應用程序以確保它是不可能 –