通过JSON更新Angular动态组件

时间:2018-09-10 09:59:19

标签: javascript angular dynamic angular5 angular-components

我正在为我的应用程序使用angular 5,在我的应用程序中,我正在创建各种嵌套的动态组件,并且该嵌套最多可以达到4个级别。例如

<GP-Component>
    <parentCOmponent>
        <component>
            <sub-component></sub-component>
        </component>
    </parentCOmponent>
</GP-Component>

实际上是这样的:

<GP-Component>
<parentCOmponent>
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ comp-2
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ comp-3
    <component>
        <div >
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ compo-4
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ compo-5
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>
</parentCOmponent>

我通过JSON维护数据,因此当我最初通过JSON时,它会基于JSON中定义的属性创建所有内容,一切工作正常,但现在我应该在用户A为进行更改。

我的问题是我可以在父级更新JSON,但是我也可以更新JSON,但是由于我创建的所有内容都是动态的,因此如何显示JSON更改。

1 个答案:

答案 0 :(得分:0)

所以我得到了解决方案(由于我的一位同事),他几天前就穿鞋了,我在写答案,如果有人看起来很相似或者可以进一步改善。

答案:

当我需要更新数据并在获取新数据时将其显示给用户B(某种自动更新)时,我将新数据设置为服务,然后:

this.ngOnDestroy();
//@ set data into a service
this.container.clear(); //@ container holding dynamic components
this.ngOnInit();

并且工作正常。我只是担心我正在使用轮询从服务器获取数据以显示用户B每10秒更新一次,因此,在一分钟内我将运行ngOnInit周期为6次,但不确定是否可以执行起来成本很高,因为运行ngOnInit将重置所有内容,并且所有嵌套的组件都将重新初始化。

期待有人会提出更好的优化建议(将轮询减少到25-35秒)

谢谢