2017-05-04 50 views
0

我已經創建的組件名爲app-inline-edit,它應該像這樣使用:如何訪問子組件的數據? Angular2

<app-inline-edit (onSave)="saveEditCheck($event)"> 
    <app-select formControlName="CurrentCar" [options]="carOptions"></app-select> 
</app-inline-edit> 

默認情況下它應該在「CurrentCar」作爲普通字符串旁邊鉛筆圖標顯示值。如果用戶點擊字符串或圖標,它應該呈現具有兩個圖標的「應用程序選擇」組件:一個用於保存更改,另一個用於丟棄它們。

編輯: 子app-inline-edit並不總是app-select,它也可以是不同的組件。 這是我的模板有:

<div> 
    <div *ngIf="editing"> 
    <div #inlineEditControl class="inline-edit-input"> 
     <ng-content></ng-content> 
    </div> 
    <i class="fa fa-check" aria-hidden="true" (click)="save()"></i> 
    <i class="fa fa-times" aria-hidden="true" (click)="discard()"></i> 
    </div> 
    <div *ngIf="!editing"> 
    <div title="Click to edit" (focus)="edit(value);" tabindex="0" class="inline-edit"> 
     {{value}}&nbsp;<i class="fa fa-pencil" aria-hidden="true" (click)="edit(value)"></i> 
    </div> 
    </div> 
</div> 

我試圖通過

@ViewChild('inlineEditControl') inlineEditControl: ElementRef; 

訪問,但是當editingfalseinlineEditControlundefined。 我遇到的問題是。我如何訪問附加到「應用程序選擇」的選定值(CurrentCar),如果默認情況下不選擇?它甚至有可能嗎?

回答

1

您應該使用@ViewChild

在你的組件

@ViewChild<AppSelectComponent> appSelectComponent: AppSelectComponent; 

this.appSelectComponent.options /////////////// have it here 


<app-select formControlName="CurrentCar" [options]="carOptions"></app-select> 
+0

它可能是,如果孩子將總是相同成分的溶液。不幸的是,這不是我的情況。忘了提這個,對不起。我在帖子中添加了更多細節。 –

+0

你可以創建一個運動員嗎? – Aravind

相關問題