简体   繁体   English

Angular 生成动态组件

[英]Angular generate dynamic component

I was writing Unit test cases for my angular project.我正在为我的 angular 项目编写单元测试用例。 In one of the component, another component is used as child component.在其中一个组件中,另一个组件用作子组件。 I created mock child component.我创建了模拟子组件。 To avoid redundant code, I created a helper function which will generate a component and return so I can declare mock components in test bed.为了避免冗余代码,我创建了一个辅助函数,它将生成一个组件并返回,以便我可以在测试台中声明模拟组件。 But I am not sure how can I declare Inputs and Outputs on a dynamic component.但我不确定如何在动态组件上声明输入和输出。

Here is my code for dynamic component generation.这是我的动态组件生成代码。

export function getMockComponent(selector: string) {
    @Component({ selector, template: '' })
    class MockComponent { }
    return MockComponent;
}

And I am expecting something like this:我期待这样的事情:

export function getMockComponent(selector: string, { inputs = [], outputs = [] } = {}) {
    @Component({ selector, template: '' })
    class MockComponent { 
        for (let i = 0; i < inputs.length; i++) {
            @Input() inputs[i];
        }
    }
    return MockComponent;
}

In a function, you can apply class decorator by applying it directly to a class在函数中,您可以通过将其直接应用于类来应用类装饰器

Component({ selector, template: '' })(
    class MockComponent { 
        for (let i = 0; i < inputs.length; i++) {
            @Input() inputs[i];
        }
    })

but it might not work with AOT compilation.但它可能不适用于 AOT 编译。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM