2017-07-28 20 views
1

我正在關注角度官方網站(https://angular.io/tutorial/toh-pt3)中的教程。當我們需要在另一個組件(子/父)中導入組件(父/子)時?

  1. 當我學會了如何父組件(AppComponent)與子組件(HeroDetailComponent)溝通,因爲我們在父組件的模板,<hero-detail [hero]="selectedHero"></hero-detail>添加此,它看起來像我與父組件會談子組件,爲什麼我們不會將子組件導入父組件(import { HeroDetailComponent } from './hero-detail.component'; )並將父組件導入子組件(import { AppComponent } from './app.component';)?

  2. 如果我們不這樣做,角怎麼知道這是如何工作的([hero]="selectedHero")? 'hero'是子組件的屬性,'selectedHero'是父組件的屬性嗎?

  3. 我們何時需要導入組件?當我們不需要?

回答

1

我想你不太明白我們爲什麼需要進口。實質上,模塊允許我們將代碼拆分成不同的文件。假設你在一個文件/模塊如下:現在

class AComp {} 

class BComp { 
    constructor() { 
     // creates new instance of AComp 
     new AComp(); 
    } 
} 

,你可以在這裏看到BComp使用參考到acomp中的類來創建類的實例。然後,我們決定將這些類分成不同的模塊/類:

----------------------------- a-comp.js ----------------------------- 

class AComp {} 

----------------------------- b-comp.js ----------------------------- 

class BComp { 
    constructor() { 
     // creates new instance of AComp 
     new AComp(); 
    } 
} 

如果運行b-comp.js現在的JavaScript引擎將拋出一個錯誤,因爲它會說,還有的b-comp.js文件/模塊中沒有AComp類。所以我們需要告訴JS引擎在哪裏尋找AComp。我們通過導入來實現:

import { AComp } from 'a-comp'; 
class BComp { 
    constructor() { 
     // creates new instance of AComp 
     new AComp(); 
    } 
} 

現在一切都會正常工作。

我們何時需要導入組件?當我們不需要?

正如你可以看到,我們有,因爲我們使用b-comp.js文件/模塊AComp類引用使用進口。如果我們沒有在BComp文件/模塊中使用AComp類參考,則不需要導入AComp類。

......爲什麼我們不導入子組件到父組件

你可以從教程看,既不AppComponent類使用HeroDetailComponent類引用直接在文件/模塊代碼,也HeroDetailComponent使用AppComponent類參考。所以不需要導入它們。

如果我們不這樣做,角怎麼知道這是如何工作的 ([hero] =「selectedHero」)? 'hero'是子組件的屬性, 'selectedHero'是父組件的屬性?

因爲這可以從父AppComponent模板和角度編譯器提供的信息來推斷使用此語法[hero]="selectedHero"獲得所有所需的信息。

相關問題