我正在努力使Material Design Lite(MDL)与Angular2的2.0.0-rc.1版本配合使用,特别是在动态内容方面。
我有两个组件,一个是包含第二个组件的主要应用程序组件。我可以将HTML放入主要组件的模板中,使用MDL类,拥有该组件implement OnInit
并componentHandler.upgradeDom()
从那里调用。到目前为止,所有已添加的HTML都已由MDL注册。
但是,当我让第二个组件使用service
并将其动态添加到其模板中时,第一个组件不会注册该东西componentHandler.upgradeDom()
。我不明白为什么componentHandler.upgradeDom()
在添加了动态内容之后从第二个组件进行调用也不起作用。我认为应该。它使用不同的componentHandler
东西吗?
另一个想法是让第二个组件以某种方式调用第一个组件的函数,以告诉它使用它componentHandler
并从那里更新DOM,但是我不知道该怎么做。
出于测试目的,我添加了一个本机Javascript文件,该文件调用相同的文件并有一个按钮触发它-可以正常工作。
我在StackOverflow上找到了几个指令,该指令据说可以自动注册所有新的HTML,但是对我来说不起作用。有谁知道如何针对此版本的Angular2执行此操作?
不幸的是,UtherSide的回答对我也不起作用。
我的错误是我的项目所特有的。我正在添加动态内容并告知,componentHandler.upgradeDom();
但由于CSS将其设置为,对于当时不可见的内容它不起作用opacity: 0; max-height: 0
。这对我的项目是正确的,它会在单击时更改这些设置以使用户可见。显然,这就是为什么该upgradeDom()
函数被忽略的原因。
我在代码的其他地方添加了相同的功能-基本上,当我加载内容时,我将一个布尔值设置为true,指示其已更改。当用户看到这样的隐藏部分并且布尔值是true时,将调用该函数并将布尔值设置为false,这样就不会每次都发生。
也许有人在同一地点。当然,这不是最好的解决方案,必须检查这些东西,但是,嘿,它可行。
编辑实际上,我不是100%肯定是因为有问题的内容被隐藏了,也许我只是太早调用了该函数。可能也想检查一下。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句