我一直在Angular2中試驗動態組件加載器。可能與此有關的一個問題:https://github.com/angular/angular/issues/4330似乎是,一旦組件加載了loadIntoLocation()函數,注入器就無法找到父組件的注入器或注入其中的東西。如該文章所示,您可以將從父級注入器(Injector.resolve)獲取的已解析提供程序數組傳遞到loadIntoLocation()的最後一個參數。Angular2:動態組件加載器和注入
這似乎最初工作,但我也發現,動態加載組件的任何兒童也有同樣的問題。孩子們的噴油器不知道要查找的注射樹提供商,所以一個標準的注射在孩子的構造類似
constructor(myComponent: MyComponent)
不起作用。孩子們(動態加載組件)不是動態加載,但只是「正常」使用模板實例,選擇等,我想知道:
- 這是(仍然)一個已知的問題還是我誤會什麼了嗎?
- 如果一個已知問題在子級別有任何解決方法?我嘗試了上面的構造函數,還使用@Host,並使用了forward ref + @host,但都沒有工作。是否有另一種方法來手動將綁定傳遞給未動態加載的組件?
- 有沒有其他可能的解決方法呢?
感謝您的聯繫 - 它似乎有一些更多的想法去嘗試。根據我的經驗,需要明確的是,動態加載不僅會導致注入樹被破壞,而且動態加載的組件的所有後續子組件都無法在它們的樹上行走(這與您所說的有點不同)。每個孩子似乎都被放置在自己的注射器樹中。因此,列出的工作需要以某種方式重複爲每個孩子站不住腳。高興地被證明是錯誤的...我會看看你的鏈接,看看我能否得到它的工作。非常感謝。 –
我沒有詳細調查。如果這是你說的那麼我認爲這是一個錯誤,應該報告。該樹被破壞的動態添加元素是顯而易見的,但我想這將被修復。 –