角度2动态组件装载机& ngStyle不能一起工作?

时间:2016-06-02 17:11:22

标签: angular

我正在使用angular 2的动态组件加载器的确切实现,如下所述:https://angular.io/docs/ts/latest/api/core/DynamicComponentLoader-class.html(特别是loadAsRoot实现)。

工作正常。但是,现在我想通过以下方式扩展它:父级具有一定的宽度x高度,我将其传递给服务。然后,在孩子中,我订阅了服务,并使用ngStyle呈现子维度。

这在整个应用程序中都可以正常工作,除非我使用动态组件加载器!这不是服务的问题,它在组件实例化时正确地激活控制台的宽度和高度。但无论我在ngStyle中放置什么都不会被渲染。

我做错了什么,我有什么方法可以解决这个问题?

谢谢。

修改

示例代码:

@Component({
  selector: 'child-component',
  template: '<div [ngStyle]="{'background-color':'red'}">Child</div>'
})
class ChildComponent {
}
@Component({
  selector: 'my-app',
  template: 'Parent (<child id="child"></child>)'
})
class MyApp {
  constructor(dcl: DynamicComponentLoader, injector: Injector) {
    dcl.loadAsRoot(ChildComponent, '#child', injector);
  }
}
bootstrap(MyApp);

调用ngStyle无效。

1 个答案:

答案 0 :(得分:1)

import matplotlib.pyplot as plt import numpy as np x, y = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 100)) im = (x**2 + y**2)/100-0.5 # Creating synthetic data for your example p = plt.imshow(im.T, vmin=0, vmax=1, origin='lower', interpolation='nearest') # Set limits with vmin and vmax p.cmap.set_under('k') # Set color under lower limit (k for black) p.cmap.set_over('w') # Set color over upper limit (w for white) plt.show() 没有为添加的组件配置更改检测,但dcl.loadAsRoot()取决于启用的更改检测。

https://github.com/angular/angular/issues/6223#issuecomment-195155190

中解释了一种解决方法
ngStyle

使用私有this.appRef._loadComponent(cmpRef);

_loadComponent()即将被弃用,取而代之的是DynamicComponentLoader

有关ViewContainerRef.createComponent()示例,请参阅Angular 2 dynamic tabs with user-click chosen components