iT邦幫忙

1

angular ComponentFactoryResolver 使用 @ Input

angular的動態載入:
https://angular.io/guide/dynamic-component-loader

他好像不用@Input去塞資料,下面這篇好像是說不行,這樣很麻煩阿..

https://stackoverflow.com/questions/39280057/how-do-you-use-input-with-components-created-with-a-componentfactoryresolver

但是兩年前的文不知現在有沒什麼解?

1 個回答

1
黃升煌 Mike
iT邦新手 4 級 ‧ 2018-10-22 13:58:39
最佳解答

可以注意這一行

(<AdComponent>componentRef.instance).data = adItem.data;

代表你其實不需要 @Input 就可以傳入資料

或是有什麼非用 @Input 不可的原因嗎?

看更多先前的回應...收起先前的回應...
Zaku iT邦新手 4 級 ‧ 2018-10-22 14:13:51 檢舉

恩我現在是用componentRef.instance去塞,恩好像沒有一定要用到@Input,componentRef.instance好像反而更簡潔。只是不是很了解componentRef.instance不知道是不是好的方式。順帶一問componentRef.instance.某個值該如何定義typescript?

不用特別定義,直接轉型成元件的型別即可

(<AdComponent>componentRef.instance)
Zaku iT邦新手 4 級 ‧ 2018-10-22 23:52:59 檢舉

(<AdComponent>componentRef.instance)抱歉我不太清楚"轉型成元件的型別"的意思?

AdComponent 是一個類別,透過上述的程式,已經讓 TypeScript 認定 componentRef.instance 就是 AdComponent 類別了

Zaku iT邦新手 4 級 ‧ 2018-10-23 14:59:05 檢舉

感謝大大,但我宣告componentRef.instance.data = data顯示[ts] 類型 '{}' 沒有屬性 'data'

應該要確定你在 component 的 data 是否有定義型別
或是分享一下你的程式碼, 比較好確認

我要發表回答

立即登入回答