angular創(chuàng)建組件描沟、數(shù)據綁定

組件

創(chuàng)建

ng g component components/header

使用組件

<app-header></app-header>
import { Component, OnInit } from '@angular/core'; /*引入 angular 核心*/ @Component({ 
selector: 'app-header', /*使用這個組件的名稱*/
templateUrl: './header.component.html', /*html 模板*/ 
styleUrls: ['./header.component.css'] /*css 樣式*/ 
})
export class HeaderComponent implements OnInit { /*實現(xiàn)接口*/ 
constructor() { 
/*構造函數(shù)*/ 
}
ngOnInit() { /*初始化加載的生命周期函數(shù)*/ } }

綁定數(shù)據

Angular 中使用{{}}綁定業(yè)務邏輯里面定義的數(shù)據

<h1>{{title}} </h1>
<div>1+1={{1+1}} </div>

綁定html

this.h="<h2>這是一個 h2 用[innerHTML]來解析</h2>"
<div [innerHTML]="h"></div>

綁定屬性

<div [id]="id" [title]="msg">調試工具看看我的屬性</div>

數(shù)據循環(huán)

*ngFor 普通循環(huán)
<ul><li *ngFor="let item of list"> {{item}} </li> </ul>
//循環(huán)的時候設置 key
<ul><li *ngFor="let item of list;let i = index;"> {{item}} --{{i}} </li> </ul>
//template 循環(huán)數(shù)據
<ul><li template="ngFor let item of list"> {{item}} </li> </ul>

條件判斷 *ngIf

<p *ngIf="list.length > 3">這是 ngIF 判斷是否顯示</p>
<p template="ngIf list.length > 3">這是 ngIF 判斷是否顯示</p>

*ngSwitch

<ul [ngSwitch]="score"> 
<li *ngSwitchCase="1">已支付</li> 
<li *ngSwitchCase="2">訂單已經確認</li> 
<li *ngSwitchCase="3">已發(fā)貨</li> 
<li *ngSwitchDefault>無效</li> 
</ul>

執(zhí)行事件 (click)=”getData()”

<button class="button" (click)="getData()"> 點擊按鈕觸發(fā)事件 </button>
<button class="button" (click)="setData()"> 點擊按鈕設置數(shù)據 </button>
getData(){ /*自定義方法獲取數(shù)據*/ //獲取 alert(this.msg); }
setData(){ //設置值 this.msg='這是設置的值'; }
export class NewsComponent implements OnInit {
  /*
  聲明屬性的幾種方式:
      public      共有  *(默認)  可以在這個類里面使用、也可以在類外面使用
      protected   保護類型        他只有在當前類和它的子類里面可以訪問
      private     私有                  只有在當前類才可以訪問這個屬性
  */
  //定義普通數(shù)據
  public title='我是新聞組件';
  msg='我是一個新聞組件的msg';
  private username:string='張三';
  //推薦
  public student:any='我是一個學生的屬性(數(shù)據)';
  public userinfo:object={
     username:"張三",
      age:'20'
  }
  public message:any;
  public content="<h2>我是一個html標簽</h2>";
  //定義數(shù)組
  public arr=['1111','2222','33333'];
  //推薦
  public list:any[]=['我是第一個新聞',222222222222,'我是第三個新聞'];
  public items:Array<string>=['我是第一個新聞','我是第二個新聞']
  public userlist:any[]=[{
    username:'張三',
    age:20
  },{
    username:'李四',
    age:21
  },
  {
    username:'王五',
    age:40
  }];
  public cars:any[]=[
      {
        cate:"寶馬",
        list:[
          {
            title:'寶馬x1',
            price:'30萬'
          },
          {
            title:'寶馬x2',
            price:'30萬'
          },
          {
            title:'寶馬x3',
            price:'40萬'
          }
        ]
      },
      {
        cate:"奧迪",
        list:[
          {
            title:'奧迪q1',
            price:'40萬'
          },
          {
            title:'奧迪q2',
            price:'40萬'
          },
          {
            title:'奧迪q3',
            price:'30萬'
          }
        ]
      }
  ]
  constructor() { 
    this.message='這是給屬性賦值--(改變屬性的值)';
    //獲取屬性的值
    console.log(this.msg);   
    //改變屬性的值
    this.msg="我是改變后的msg的值";
  }
  ngOnInit() {}
}
// 頁面使用
<h1>angualr模板里面綁定數(shù)據</h1>
          <h2>{{title}}</h2>
          <h3>{{msg}}</h3>
          <h4>{{username}}</h4>
          <h5>{{student}}</h5>
         <hr />
          <h6>{{userinfo.username}}</h6>
          <div>
            {{message}}
          </div>
<hr />
<h1>angualr模板里面綁定屬性</h1>
        <div title="我是一個div">
          鼠標瞄上去看一下
        </div>
        <br>
        <div [title]="student">
          張三
        </div>
<hr />
<h1>angualr模板里面綁定Html</h1>
        <div>
          {{content}}
        </div>
        <br>
        <span [innerHTML]='content' class="red"></span>
<hr />
<h1>angualr模板里面允許做簡單的運算</h1>
1+2={{1+2}}
<hr />
<h1>angualr里面的數(shù)據循環(huán)</h1>
    <ul>
      <li *ngFor="let item of arr">
          {{item}}
      </li>
    </ul>
    <br>  
    <ol>
      <li *ngFor="let item of list">
        {{item}}
      </li>
    </ol>
    <br>  
    <ol>
      <li *ngFor="let item of items">
        {{item}}
      </li>
    </ol>
    <br>  
    <ul>
      <li *ngFor="let item of userlist">
        {{item.username}}---{{item.age}}
      </li>
    </ul>
    <br>
    <ul>
      <li *ngFor="let item of cars">
          <h2>{{item.cate}}</h2>
          <ol>
            <li *ngFor="let car of item.list">
                {{car.title}}---{{car.price}}
            </li>
          </ol>
      </li>
    </ul>

表單事件

<input type="text" (keyup)="keyUpFn($event)"/>
keyUpFn(e){ console.log(e) }

雙向數(shù)據綁定 <input [(ngModel)]="inputValue">
注意引入:FormsModule

import { FormsModule } from '@angular/forms';
@NgModule({ 
declarations: [ AppComponent, HeaderComponent, FooterComponent, NewsComponent ],
imports: [ BrowserModule, FormsModule ],
providers: [],
bootstrap: [AppComponent] })
export class AppModule { }
  • 使用
<input type="text" [(ngModel)]="inputValue"/> 
{{inputValue}}

[ngClass]臭蚁、[ngStyle]

<div [ngClass]="{'red': true, 'blue': false}"> 這是一個 div </div>
 public flag=false;
 <div [ngClass]="{'red': flag, 'blue': !flag}"> 這是一個 div </div> 
public arr = [1, 3, 4, 5, 6];
 <ul><li *ngFor="let item of arr, let i = index">
 <span [ngClass]="{'red': i==0}">{{item}}</span>
 </li> 
</ul>

<div [ngStyle]="{'background-color':'green'}">你好 ngStyle</div> 
public attr='red'; 
<div [ngStyle]="{'background-color':attr}">你好 ngStyle</div>

管道

public today=new Date();
<p>{{today | date:'yyyy-MM-dd HH:mm:ss' }}</p>
export class HomeComponent implements OnInit {
 public title:string='我是一個title';
  public 
  picUrl='https://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6d a1ec.png';
  public list:any[]=[
    {
      "title":'我是新聞1'
    },
    {
      "title":'我是新聞2'
    },
    {
      "title":'我是新聞3'
    }
  ];
  public flag:boolean=true;
  public orderStatus:number=3;    
/* 1表示已經支付   2支付并且確認訂單   3、表示已經發(fā)貨   4表示已經收貨   其他、無效*/
  public attr:string='orange';
  public today:any=new Date();
  public keywords:string='這是默認值';
  constructor() { 
    console.log(this.today);
  }
  ngOnInit() {
  }
  run(){
      alert('這是一個自定義方法')
  }
  getData(){
    alert(this.title);
  }
  setData(){
    this.title='我是一個改變后的title';
  }
  runEvent(event){
    //ionic必須這樣寫
    let dom:any=event.target;
    dom.style.color="red";
  }
  keyDown(e){
    if(e.keyCode==13){
        console.log('按了一下回車')
    }else{
      //e.target 獲取dom對象
      console.log(e.target.value);
    }
  }
  keyUp(e){
    if(e.keyCode==13){
        console.log(e.target.value);
        console.log('按了一下回車');
    }  
  }
  changeKeywords(){
    this.keywords='我是改變后的值';
  }
  getKeywords(){
    console.log(this.keywords)
  }
}
//html頁面
<h1>引入圖片</h1>
        <img src="assets/images/02.png" alt="收藏" />
        <img [src]="picUrl" />
<h1>循環(huán)數(shù)據 顯示數(shù)據的索引(key)</h1>
      <ul>
        <li *ngFor="let item of list;let key=index;">
          {{key}}---{{item.title}}
        </li>
      </ul>
<h1>條件判斷語句 *ngIf</h1>
    <div *ngIf="flag">
      <img src="assets/images/02.png" />
    </div>
    <div *ngIf="!flag">
        <img src="assets/images/01.png" />
    </div> 
    <ul>
        <li *ngFor="let item of list;let key=index;">
            <span  *ngIf="key==1" class="red">{{key}}---{{item.title}}</span> 
            <span  *ngIf="key!=1">{{key}}---{{item.title}}</span> 
        </li>
     </ul>
<h1>條件判斷語句 *ngSwitch</h1>
    <span [ngSwitch]="orderStatus">
      <p *ngSwitchCase="1">
          表示已經支付
      </p>
      <p *ngSwitchCase="2">
          支付并且確認訂單
      </p>
      <p *ngSwitchCase="3">
          表示已經發(fā)貨
      </p>
      <p *ngSwitchCase="4">
          表示已經收貨
      </p>
      <p *ngSwitchDefault>
        無效訂單
      </p>
    </span>
 <h1>屬性[ngClass]奠支、[ngStyle]</h1>
                <div class="red">
                    ngClass演示 (盡量不要用dom來改變class)
                </div>
                <div [ngClass]="{'blue':true,'red':false}">
                    ngClass演示
                </div>
                <hr>  
                <div [ngClass]="{'orange':flag,'red':!flag}">
                    ngClass演示
                </div>
              <strong>循環(huán)數(shù)組,讓數(shù)組的第一個元素的樣式為red ,第二個為orange</strong>
              <ul>
                  <li *ngFor="let item of list;let key=index;" [ngClass]="{'red':key==0,'orange':key==1,'blue':key==2}">
                      {{key}}---{{item.title}}
                  </li>
              </ul>
              <hr>  
              <p style="color:red">我是一個p標簽</p>
              <p [ngStyle]="{'color':'blue'}">我是一個p標簽</p>
              <p [ngStyle]="{'color': attr}">我是一個p標簽  </p>
            <br>
<h1>管道</h1>
      {{today | date:'yyyy-MM-dd HH:mm ss'}}
<h1>事件</h1>
        <strong>{{title}}</strong>
        <button (click)="run()">執(zhí)行事件</button>
        <button (click)="getData()">執(zhí)行方法獲取數(shù)據</button>
        <button (click)="setData()">執(zhí)行方法改變屬性里面的數(shù)據</button>
        <button (click)="runEvent($event)">執(zhí)行方法獲取事件對象</button>
<h1>表單事件 事件對象</h1>
          <!-- <input type="text" (keydown)="keyDown()" /> -->
          keyDown
          <input type="text" (keydown)="keyDown($event)" />
          keyUp:
          <input type="text" (keyup)="keyUp($event)" />
<h1>雙休數(shù)據綁定--MVVM 只是針對表單</h1>
            <input type="text" [(ngModel)]='keywords' />
            {{keywords}}
            <button (click)="changeKeywords()">改變keywords的值</button>
            <button (click)="getKeywords()">獲取keywords的值</button>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市葫笼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌九榔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迷郑,死亡現(xiàn)場離奇詭異畦攘,居然都是意外死亡,警方通過查閱死者的電腦和手機温亲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魂务,“玉大人曼验,你說我怎么就攤上這事≌辰” “怎么了鬓照?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孤紧。 經常有香客問我豺裆,道長,這世上最難降的妖魔是什么号显? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任臭猜,我火速辦了婚禮躺酒,結果婚禮上,老公的妹妹穿的比我還像新娘蔑歌。我一直安慰自己羹应,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布丐膝。 她就那樣靜靜地躺著,像睡著了一般钾菊。 火紅的嫁衣襯著肌膚如雪帅矗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天煞烫,我揣著相機與錄音浑此,去河邊找鬼。 笑死滞详,一個胖子當著我的面吹牛凛俱,可吹牛的內容都是我干的。 我是一名探鬼主播料饥,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼蒲犬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岸啡?” 一聲冷哼從身側響起原叮,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巡蘸,沒想到半個月后奋隶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡悦荒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年唯欣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搬味。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡境氢,死狀恐怖,靈堂內的尸體忽然破棺而出碰纬,到底是詐尸還是另有隱情产还,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布嘀趟,位于F島的核電站脐区,受9級特大地震影響,放射性物質發(fā)生泄漏她按。R本人自食惡果不足惜牛隅,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一炕柔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧媒佣,春花似錦匕累、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至也糊,卻和暖如春炼蹦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狸剃。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工掐隐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钞馁。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓虑省,卻偏偏與公主長得像,于是被迫代替她去往敵國和親僧凰。 傳聞我的和親對象是個殘疾皇子探颈,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容