export class News{ id:number; title:string; create_date:string; click:number; }
接着咱們建立一個模擬新聞列表的類css
2)mock-news.tshtml
import {News} from './news'; export const NewList: News[] = [ { id: 1, title: '十九大最新報道', create_date: '2017-11-10', click: 10 }, { id: 2, title: '西二旗地鐵空車', create_date: '2017-10-10', click: 11 }, { id: 3, title: '日本有開始找事了', create_date: '2017-11-12', click: 12 } ]
準備好上面的工做,咱們真正須要建立component了,npm
3)建立newslist.component.tsbootstrap
import { Component } from '@angular/core'; import { News } from './news'; import { NewList } from './mock-news'; @Component({ selector:'news', templateUrl:'./newslist.component.html', styleUrls:['./newslist.component.css'] }) export class NewsListComponent{ newlist = NewList; }
4)建立 newslist.component.htmlapp
<h2>新聞列表</h2> <ul class="ul_news"> <li *ngFor="let n of newlist" > {{n.id}}.{{n.title}} <span>{{n.create_date}}</span> </li> </ul>
5)建立newslist.component.csside
*{margin: 0px; padding: 0;} .ul_news{list-style: none; margin-bottom: 10px; } .ul_news li { width: 300px; height: 30px; line-height: 30px; text-align: left; padding:5px; border-bottom: 1px dashed #ccc; cursor:pointer;} .ul_news li:hover{background:blanchedalmond;} .ul_news li span{float:right;}
至此,咱們已經建立完成,目錄結果以下圖,此時運行npm start 並不能看到咱們的新聞列表this
想在運行時預覽須要把咱們的NewListComponent 裝載到 app.module.ts中,由於他是根模塊,啓動從這裏開始spa
具體調整入下命令行
app.component.ts雙向綁定
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { NewsListComponent } from './news/newslist.component'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent, NewsListComponent ], imports: [ BrowserModule, FormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
能夠看到,咱們增長了NewsListComponent ,同時在NgModule的declarations中加入NewsListComponent
另外在app.component.html增長上咱們的新視圖標籤 news
<h1> Welcome to {{title}}! </h1> <news> </news>
在命令行中 運行npm start ,運行結果以下
咱們想在用戶點擊新聞列表的時候下面展現新聞的詳細信息,該如何操做那
1)修改 newslist.component.ts
import { Component } from '@angular/core'; import { News } from './news'; import { NewList } from './mock-news'; @Component({ selector:'news', templateUrl:'./newslist.component.html', styleUrls:['./newslist.component.css'] }) export class NewsListComponent{ newlist = NewList; selectedNew:News; onSelected(n:News):void{ this.selectedNew=n; } }
增長屬性selectedNew 和事件 onSelected 方法。
同時記得在newlist.component.html 的新聞項上增長
2)修改newlist.component.html
在後面追加代碼
<div *ngIf="selectedNew"> <h3>新聞詳細</h3> <table> <tr> <td>id:</td> <td> {{selectedNew.id}}</td> </tr> <tr> <td>title:</td> <td> <input [(ngModel)]="selectedNew.title" placeholder="title" /> </td> </tr> </table> </div>
此時要注意,[(ngModel)] 是Angular的雙向綁定(先會用,之後再慢慢了解其中的原理),須要在app.module.ts中引入FormsModule ,不然頁面會報錯。
3)再次運行 npm start 能夠看到以下結果
1.熟悉Component的建立,注意裝飾器的寫法@Component 中的標籤,另外templateUrl,能夠本身使用 template:,一般簡單的時候能夠直接使用
2.熟悉指令*ngFor,*ngIF,(click)的綁定,雙向綁定[(ngModle)] 的用法
3.瞭解NgModule 和Component的關係,一個app的根模塊一般都是app.module.ts