Android開發(fā)中父組件調(diào)用子組件方法demo
正文
在一些非常罕見的情況下,你可能需要直接從父組件中調(diào)用子組件的方法。一般來說,這應(yīng)該被看作是最后的手段。在大多數(shù)情況下,組件通信應(yīng)該限于數(shù)據(jù)綁定(包括輸入和輸出),以及在某些情況下,使用服務(wù)在兩個組件之間發(fā)送值。
然而,有些時候,我在兩個組件之間出現(xiàn)了競賽條件,而這些條件只有通過非常精確的方法調(diào)用順序才能解決。這意味著,我需要它們同步發(fā)生。為此,這個方法是一個救命稻草,而且也很簡單
考慮到我有以下組件
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.scss']
})
export class ParentComponent implements OnInit {
}
子組件:
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.scss']
})
export class ChildComponent implements OnInit {
callMe(value : string) {
console.log('Called : ' + value);
}
}
在parent.component.html的視圖中,我放置了子組件:
<app-child></app-child>
現(xiàn)在在我的父組件中,我可以像這樣使用ViewChild來獲得對子組件的直接引用:
export class ParentComponent implements OnInit {
@ViewChild(ChildComponent, {static : true}) child : ChildComponent;
}
注意,我沒有像我們有時使用ViewChild那樣傳入一個 "字符串 "來查找,我們傳入的是我們正在尋找的組件的實際類型。
組件調(diào)用
然后,這就像在我們的孩子身上調(diào)用一些東西一樣簡單:
export class ParentComponent implements OnInit {
@ViewChild(ChildComponent, {static : true}) child : ChildComponent;
callMyChild(){
child.callMe('Calling from the parent!');
}
}
然而,通常的ViewChild規(guī)則適用,一般來說,你只能在視圖初始化后訪問ViewChild引用(所以你不能在ngOnInit方法中訪問它們,你必須使用ngAfterViewInit)。
同樣,使用數(shù)據(jù)綁定或 "連接服務(wù) "來讓兩個組件進行通信通常會好得多。但往往很難同步需要發(fā)生的動作的精確順序。因此,對于這一點,ViewChild是贏家。
以上就是Android開發(fā)中父組件調(diào)用子組件方法demo的詳細內(nèi)容,更多關(guān)于Android父組件調(diào)用子組件的資料請關(guān)注腳本之家其它相關(guān)文章!
- Android Jetpack導(dǎo)航組件Navigation創(chuàng)建使用詳解
- Android性能優(yōu)化之RecyclerView分頁加載組件功能詳解
- Android開發(fā)組件化架構(gòu)設(shè)計原理到實戰(zhàn)
- Android開發(fā)組件flutter的20個常用技巧示例總結(jié)
- Android開發(fā)Jetpack組件DataBinding用例詳解
- Android開發(fā)Jetpack組件WorkManager用例詳解
- Android開發(fā)Jetpack組件Room用例講解
- 詳解Android中通過Intent類實現(xiàn)組件間調(diào)用的方法
相關(guān)文章
Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法
這篇文章主要介紹了Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法,結(jié)合實例形式分析了Android視頻播放事件響應(yīng)及相關(guān)屬性設(shè)置操作技巧,需要的朋友可以參考下2017-08-08
Intent傳遞對象之Serializable和Parcelable的區(qū)別
Intent在不同的組件中傳遞對象數(shù)據(jù)的應(yīng)用非常普遍,大家都知道在intent傳遞對象的方法有兩種:1、實現(xiàn)Serializable接口、2、實現(xiàn)Parcelable接口,接下來通過本文給大家介紹Intent傳遞對象之Serializable和Parcelable的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2016-01-01
Android ScrollView實現(xiàn)向上滑動控件頂部懸浮效果
這篇文章主要為大家詳細介紹了Android ScrollView實現(xiàn)向上滑動控件頂部懸浮效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
關(guān)于Android實現(xiàn)簡單的微信朋友圈分享功能
這篇文章主要介紹了關(guān)于Android實現(xiàn)簡單的微信朋友圈分享功能,非常不錯,具有參考借鑒價值,需要的的朋友參考下2017-02-02
Mac中配置gradle環(huán)境及使用android studio打包jar包與arr包的方法
這篇文章主要給大家介紹了關(guān)于在Mac中配置gradle環(huán)境,以及使用android studio打包jar包與arr包的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01

