2016-11-26 55 views
0

視圖父組件的參考我的目錄結構,如下所示:如何從子組件訪問angular2

directory structure

我分配父組件(app.component)的一些方法來它的實例變量作爲如下:

export class AppComponent implements AfterViewInit, AfterContentInit{ 
    @ViewChild('contentLoginModl') contentLoginModlCon: ElementRef; 
    @ViewChild('modlSignToApplyTg') modlSignToApplyTg: ElementRef; 
    @ViewChild('uploadCV') uploadCV: ElementRef; 
    ..... 
    constructor(){ .... } 
    ..... 
    ngAfterViewInit() { 
    this.appState.set('opnLgnAppTmp',this.contentLoginModlCon); 
    this.appState.set('opnUpldCvAppTmp',this.uploadCV); 
    this.appState.set('opnLgnBfrAppTmp',this.modlSignToApplyTg); 
    } 

APPSTATE(服務)是通過所有部件共享的,但是當我打電話給孩子compinent內部函數訪問parrent的refrence查看它有沒有定義如下:

TypeError: Cannot read property 'open' of undefined 
    at AppState._state.open (http://localhost:5003/static/main.prod.bundle.js:6:3788) 
    at AppComponent.opnWithTry (http://localhost:5003/static/main.prod.bundle.js:2:17395) 
    at AppComponent.opnLgnBfrApp (http://localhost:5003/static/main.prod.bundle.js:2:2714) 
    at EditProfile.starItm (http://localhost:5003/static/main.prod.bundle.js:7:14899) 
    at View_EditProfile26.handleEvent_24 (/AppModule/EditProfile/component.ngfactory.js:2700:51) 
    at HTMLAnchorElement.<anonymous> (http://localhost:5003/static/vendor.prod.bundle.js:27:22958) 
    at ZoneDelegate.invokeTask (http://localhost:5003/static/polyfills.prod.bundle.js:4:12265) 
    at Object.onInvokeTask (http://localhost:5003/static/vendor.prod.bundle.js:26:14260) 
    at ZoneDelegate.invokeTask (http://localhost:5003/static/polyfills.prod.bundle.js:4:12170) 
    at Zone.runTask (http://localhost:5003/static/polyfills.prod.bundle.js:4:8197) 

回答