2016-10-25 21 views
0

我有一個角度應用程序(TypeScript)安裝程序,其中父組件包含另一個子組件。 城市組件(子)發出Ajax請求以加載需要大約2秒的數據(城市)。如何在父親之前加載子組件

@Component({ 
    providers: [UserService], 
    template: `<city [city]='user.city' (citySelected)="user.city = $event"></city>` 

}) 
export class FormComponent implements OnInit{ 

    private user:User = new User(); 

.... 

問題,我需要城市組件在父組件之前先加載。

+0

你在哪裏在'ngOnInit()'城市組件中發出ajax請求? – Searching

+0

是的。我在ngOnInit()中做了ajax請求。 –

+0

我的應用:(http://www.renatodev.com.br/ |登錄:演示|密碼:demo123)當我編輯記錄時,州和城市出現延遲。 –

回答

0

考慮Angular 2如何處理組件交互,您的子組件應該首先加載。

我看到你正試圖從父組件初始化你的用戶對象。考慮到Angular 2的工作原理,您的子組件將首先加載,並且無法訪問user.city。最簡單的解決方案是在您的模板中添加一個*ngIf以延遲子組件的初始化,以等待用戶對象加載。

下面是包含我提到的解決方案的上述問題的代碼片段。

@Component({ 
providers: [UserService], 
template: `<city *ngIf="user" [city]='user.city' 
(citySelected)="user.city = $event"></city>` 

}) 

export class FormComponent implements OnInit{ 

    private user:User = new User(); 

} 

讓我知道是否有人需要更多的澄清。乾杯!

+0

示例代碼可以幫助任何人。 –