Android開發(fā)中父組件調(diào)用子組件方法demo
正文
在一些非常罕見的情況下,你可能需要直接從父組件中調(diào)用子組件的方法。一般來說,這應該被看作是最后的手段。在大多數(shù)情況下,組件通信應該限于數(shù)據(jù)綁定(包括輸入和輸出),以及在某些情況下,使用服務在兩個組件之間發(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ù)綁定或 "連接服務 "來讓兩個組件進行通信通常會好得多。但往往很難同步需要發(fā)生的動作的精確順序。因此,對于這一點,ViewChild是贏家。
以上就是Android開發(fā)中父組件調(diào)用子組件方法demo的詳細內(nèi)容,更多關于Android父組件調(diào)用子組件的資料請關注腳本之家其它相關文章!
相關文章
Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法
這篇文章主要介紹了Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法,結(jié)合實例形式分析了Android視頻播放事件響應及相關屬性設置操作技巧,需要的朋友可以參考下2017-08-08
Intent傳遞對象之Serializable和Parcelable的區(qū)別
Intent在不同的組件中傳遞對象數(shù)據(jù)的應用非常普遍,大家都知道在intent傳遞對象的方法有兩種:1、實現(xiàn)Serializable接口、2、實現(xiàn)Parcelable接口,接下來通過本文給大家介紹Intent傳遞對象之Serializable和Parcelable的區(qū)別,感興趣的朋友一起學習吧2016-01-01
Android ScrollView實現(xiàn)向上滑動控件頂部懸浮效果
這篇文章主要為大家詳細介紹了Android ScrollView實現(xiàn)向上滑動控件頂部懸浮效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Mac中配置gradle環(huán)境及使用android studio打包jar包與arr包的方法
這篇文章主要給大家介紹了關于在Mac中配置gradle環(huán)境,以及使用android studio打包jar包與arr包的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-01-01

