Angular2 三:Hero Demo 多組件模板配合使用

上一節(jié)我們把一級界面做好了,并且添加了點(diǎn)擊事件,如果沒看的話,請點(diǎn)擊這里

接下來 來實(shí)現(xiàn) 一級頁面中 某個(gè)英雄點(diǎn)擊的時(shí)候 , 用另一個(gè)模板來顯示詳細(xì)信息

在 src/app 文件夾之下 創(chuàng)建一個(gè)新的文件 hero-detail.component.ts

在該文件中編寫代碼如下:(圖1)

圖1

注意:命名規(guī)范方面的問題
? ? 所有組件名都以 Component 結(jié)尾
? ? 所有組件文件都以 .component 結(jié)尾

好了,現(xiàn)在讓我們來實(shí)現(xiàn)第一步,將英雄的詳細(xì)信息展示都組件 HeroDetailComponent 中, 而不是像原來那樣展示到 AppComponent 中

1.將組件 AppComponent 的模板中顯示英雄詳細(xì)信息的那段 挪到 HeroDetailComponent 中
2.在AppComponent組件中,我們擁有selectedHero屬性,但是在HeroDetailComponent組件中并沒有這個(gè)屬性,所有,將HeroDetailComponent組件模板中的所有selectedHero用hero屬性替換掉.
這兩步操作完成之后, app.component.ts 和 hero-detail.component.ta 的界面如下面的圖2 圖3 所示:
? ??

圖2


圖3

3.但是我們的HeroDetailComponent組件中,到現(xiàn)在為止,并沒有 hero 這個(gè)屬性,
所以我們要在HeroDetailComponent組件的class中增加這樣一個(gè)hero屬性,圖4

圖4

4.英雄屬性做好之后,有發(fā)現(xiàn)了一個(gè)問題, hero屬性并不認(rèn)識Hero這個(gè)類型
5.這是后,打開app.component.ts 這個(gè)文件,我們發(fā)現(xiàn),原來這個(gè)文件中,定義了一個(gè)叫Hero的類組件,圖5

圖5

6.問題就來了,既然 Hero 組件是在 app.component.js 文件中定義的,那hero-detail.component.ts 文件中可定就不認(rèn)識這個(gè) Hero , 那我們該怎么辦呢?

7.接下來我們創(chuàng)建一個(gè)新的文件 hero.ts
? ? 在這個(gè)文件中我們定義一個(gè)Hero 類,并導(dǎo)出,圖6

圖6

8.在app.component.ts 中刪掉那個(gè) Hero 組件,并導(dǎo)入 hero.ts ,這樣app.component.ts 就認(rèn)識英雄 這個(gè)組件了,
同理 在hero-detail.component.ts 中 也導(dǎo)入 hero.ts 這個(gè)文件,這樣,HeroDetailComponent 不也就認(rèn)識Hero 這個(gè)東東了,按照這個(gè)思路,兩個(gè)文件的代碼修改完之后如圖7 圖8 所示:

圖7


圖8


9.引入之后,當(dāng)我們在列表中點(diǎn)擊某一個(gè)英雄的時(shí)候,會把英雄的值傳遞給selectedHero變量,怎么才能傳遞給HeroDetailComponent的hero屬性呢?
在AppComponent的模板中,引入HeroDetailComponent的模板,圖9

圖9

當(dāng)在列表中點(diǎn)擊某個(gè)英雄的時(shí)候,會把英雄的變量傳遞給HeroDetailComponent模板的[hero]屬性,這是,我們需要在HeroDetailComponent組件中增加一個(gè)Input模塊,來接受傳遞過來的值:圖10

圖10

ok,大功告成,去瀏覽器試一下吧,當(dāng)在頁面上點(diǎn)擊某個(gè)英雄的時(shí)候,顯示英雄的詳細(xì)信息,但英雄的詳細(xì)信息,是根據(jù)另一個(gè)模板HeroDetailComponent來顯示的,而不是原來的一個(gè)模板組件了.

到此為止,我們的界面展示才不多就完成了,但是還有一個(gè)問題就是:我們的數(shù)據(jù)是在組件中寫死的,怎樣才能做到讓我們的數(shù)據(jù)和界面組件分離呢? 請看下節(jié) Angular2 四:Services 服務(wù)注入

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Angular 2架構(gòu)總覽 - 簡書http://www.itdecent.cn/p/aeb11061b82c A...
    葡萄喃喃囈語閱讀 1,548評論 2 13
  • 版本:4.0.0+2 有一些英雄指南應(yīng)用的新需求: 添加一個(gè)儀表盤 視圖。 添加在英雄 視圖和 儀表盤 視圖之間導(dǎo)...
    soojade閱讀 1,444評論 0 0
  • 版本:4.0.0+2 此時(shí)AppComponent做了所有的事情。起初,它顯示一個(gè)單一英雄的詳情。然后,它成了有一...
    soojade閱讀 642評論 0 1
  • 一天,我去買鞋,看上了一雙休閑鞋,便問價(jià)。 阿姨:“38塊?!?我:“25塊可以的啦?!?阿姨:“那32塊” 我:...
    易多咪閱讀 288評論 0 0
  • 一直以來我都比較喜歡看電視劇,只要一有空我就會追個(gè)不停。 不知道這算不算我 的一大愛好,我看電視劇還有些不一樣,我...
    是的比心閱讀 6,204評論 0 1

友情鏈接更多精彩內(nèi)容