【发布时间】:2017-01-09 20:11:39
【问题描述】:
是否有一种方法可用于在动态创建的 Angular 2 组件上定义 @Input 属性?
我正在使用ComponentFactoryResolver 在容器组件中创建组件。例如:
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentName);
let componentRef = entryPoint.createComponent(componentFactory);
“entryPoint”在组件 HTML 中是这样的:
<div #entryPoint></div>
并在我的容器组件中定义为:
@ViewChild('entryPoint', { read: ViewContainerRef } entryPoint: ViewContainerRef;
这很好用,但我找不到让 @Input 属性在新创建的组件上工作的方法。我知道您可以在组件类上显式设置公共属性,但这似乎不适用于 ng-reflect。在进行此更改之前,我有一个用“@Input()”装饰的“选定”属性,这导致 Angular 将以下内容添加到 DOM:
<my-component ng-reflected-selected="true"></my-component>
有了这个,我能够动态更新标记以切换 CSS 类:
<div class="header" [class.active-header]="selected === true"></div>
根据一些搜索,我找到了一种使“@Output”按预期工作的方法,但我还没有为@Input 找到任何东西。
如果其他上下文有帮助,请告诉我,我很乐意添加。
【问题讨论】:
标签: angular