国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解Angular6學習筆記之主從組件

2019-11-19 13:01:16
字體:
來源:轉載
供稿:網友

主從組件

繼學習筆記6,現在可以在頁面上顯示一個數組,但是原則上不能將所有特性放在同一個組件中,因為如果將所有特性放在同一個組件中,當特性特別多時,組件就變得不好維護了。所以要將大型組件拆分為多個小型組件,使每一個小型組件集中處理某一個特性任務或者工作流,而且這樣也便于維護。

這次要將學習筆記6中的查看hero詳情,放置在一個新的,獨立,可復用的組件中,集中在新的組件管理和維護hero詳情的信息。

1.創建一個新的組件

使用 Angular CLI 生成一個名叫 hero-detail 的新組件。

wjydeMacBook-Pro:demo wjy$ ng generate component hero-detailCREATE src/app/hero-detail/hero-detail.component.css (0 bytes)CREATE src/app/hero-detail/hero-detail.component.html (30 bytes)CREATE src/app/hero-detail/hero-detail.component.spec.ts (657 bytes)CREATE src/app/hero-detail/hero-detail.component.ts (288 bytes)UPDATE src/app/app.module.ts (548 bytes)

這樣就生成了 HeroDetailComponent 組件所需要的文件,并把它聲明在 AppModule 中。

2.編寫 HeroDetailComponent的模版(hero-detail.component.html)

從 HeroesComponent 模板的底部把表示英雄詳情的 HTML 代碼剪切粘貼到所生成的 HeroDetailComponent 模板中。

粘貼過來的html代碼中,有selectHero這個屬性,由于現在我們展示的不僅僅是被選中的hero,而是需要展示的是每一個hero,這個過程相當于將HeroDetail這個組件的功能擴大化。所以將其更改為:hero , hero-detail.component.html如下:

<div *ngIf="hero"> <h2>{{hero.name | uppercase}} Details</h2> <div><span>id: </span>{{hero.id}}</div> <div>  <label>name:   <input [(ngModel)]="hero.name" placeholder="name"/>  </label> </div> </div>

因為HeroDetail重的hero是從其他父組件得到。所以hero 屬性必須是一個帶有 @Input() 裝飾器的輸入屬性,因為外部的 HeroesComponent 組件將會綁定到它。

具體步驟:

導入Hero

import { Hero } from '../hero';

導入Input符號

import { Component, OnInit, Input } from '@angular/core';

定義hero

@Input() hero: Hero;

這樣,就對heroDetail的類文件寫好了,heroDetail所做的工作就是:從其他的父組件中接收一個Hero類型的對象,并將它展示出來

3.顯示 HeroDetailComponent

現在有HeroDetail組件顯示每一個Hero的具體詳情信息,而Heroes組件需要顯示每一個Hero的詳細信息,這個時候,Heroes組件和heroDetail組件就有了主從關系,heroes組件需要將需要展示詳情的Hero對象傳給具有展示功能的HeroDetail組件

HeroDetailComponent 的選擇器是 'app-hero-detail'。 把 <app-hero-detail> 添加到 HeroesComponent 模板的底部,以便把英雄詳情的視圖顯示到那里,并把 HeroesComponent.selectedHero 綁定到該元素的 hero 屬性, HeroesComponent模版即:

<h2>My Heroes</h2><ul class="heroes"> <li *ngFor="let hero of heroes" (click)="onSelect(hero)" [class.selected]="hero === selectedHero">  <span class="badge">{{hero.id}}</span> {{hero.name}} </li></ul><app-hero-detail [hero]="selectedHero"></app-hero-detail>

保存瀏覽器刷新,界面和之前的不會有變化,但是會有一下優點:

  • 通過縮減 HeroesComponent 的職責簡化了該組件。
  • 把 HeroDetailComponent 改進成一個功能豐富的英雄編輯器,而不用改動父組件 HeroesComponent。
  • 改進 HeroesComponent,而不用改動英雄詳情視圖。
  • 將來可以在其它組件的模板中重復使用 HeroDetailComponent。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赞皇县| 安西县| 武夷山市| 桂阳县| 湘潭市| 连州市| 太白县| 台北县| 大庆市| 阜康市| 江华| 新丰县| 沁源县| 潍坊市| 盐亭县| 承德县| 鄱阳县| 南召县| 毕节市| 白玉县| 博白县| 霍林郭勒市| 准格尔旗| 朔州市| 三门县| 沈阳市| 阿瓦提县| 荣成市| 图片| 铅山县| 靖西县| 赤峰市| 广宁县| 龙陵县| 吉隆县| 治县。| 泗洪县| 乃东县| 兰考县| 屏东市| 增城市|