3

我正在尝试在任何容器内构建一个动态组件。我需要在动态创建的组件内的角度世界中提供一些预定义的服务和注入。造成这种情况的主要原因是有一个外部服务负责组件的外观,但需要在客户端的组件上执行其他操作。

private elementRef:用于注入的动态组件的构造函数中的ElementRef导致问题,它无法为注入提供值。收到错误 - “错误错误:无法解析 Xyz 的所有参数:(?)。”

const component = Component({
            template: div,
            selector: 'test'
        })(
            class Xyz {
                constructor(private elementRef: ElementRef) { }
            });
        const module = NgModule({ declarations: [component] })(class {
        });
        this.compiler.compileModuleAndAllComponentsAsync(module)
            .then((factories) => {
                const f = factories.componentFactories[0];
                const cmpRef = f.create(this.injector, [], null, this.ngModuleRef);
                                container.clear();
                container.insert(cmpRef.hostView);
             });

将参数注入或传递给动态创建的构造函数的最佳方法是什么?

4

1 回答 1

1

如果将 Component 和 NgModule 定义为 @Component 和 @NgModule 语法,它就可以工作。使用您使用的方法时,我遇到了同样的问题。我不知道为什么一个不起作用而另一个起作用的确切原因。检查这个已接受的答案: How to access the function when using dynamic injection component in Angular

于 2019-12-04T12:30:32.670 回答