[Angular] ViewChild及ContentChild介紹
昨天參加線上angular讀書會(打個廣告),分享的內容是ngContent
之前自己在寫的時候,套用bootstrap的功能時就有應用到
但那時候一直看不懂是什麼意思,在昨天就整個豁然開朗
那到底什麼是ViewChild、ContentChild,底下來看看範例吧
ViewChild
app-tab這個element就是ViewChild,也就是子Component的概念
這時候就會有人問,這樣做有什麼好處
可以直接引用子Component所有public事件、屬性
也就是說,可以不用辛苦的用Input、Output來進行傳遞(好壞先不討論囉!)
ngContent
什麼是ngContent,可以說是叫做範本引入或是內容置換
也就是把那個位置的內容變成由外面傳進來,app.component.ts中app-tab的內容就是自定義
那基本上ng-content就是直接把外面傳的東西換掉放進去
進階一點的應用就是有多個ngContent,需要指定每個所放的位置
在ng-content中加上select並指定就可以取得父component所傳入的內容
這邊有三個類型
- .class
- tagName
- 沒有指定
ContentChild
ContentChild有兩種取得的方式,在同一個parent中,是不能有重複的#id
- #id
- className
記得要取得ContentChild必須要在AfterContentInit這個事件之後才能拿到物件
你才能夠爽爽的使用,不然會鼠翹翹喔!
Child vs Children
差異非常的小,就是一個單數一個複數,收工@@
參考資料
線上angular讀書會 S01E03
ViewChildren and ContentChildren in Angular 2