首頁 > web前端 > js教程 > 主體

angular學習之聊指令與管道

青灯夜游
發布: 2022-05-17 11:01:57
轉載
1544 人瀏覽過

這篇文章帶大家了解一下angular中的指令(Directive)和管道(Pipe),簡單介紹一下相關知識點:內建指令和自訂指令,內建管道和自訂管道,希望對大家有幫助!

angular學習之聊指令與管道

指令 Directive


#指令是 Angular 提供的操作 DOM 的路徑。指令分為屬性指令結構指令

  • 屬性指令:修改現有元素的外觀或行為,使用 [] 包裹。

  • 結構指令:增加、刪除 DOM 節點以修改佈局,使用*作為指令前綴。 【相關教學推薦:《angular教學》】

1、內建指令

#1.1 *ngIf

根據條件渲染 DOM 節點或

移除

DOM 節點。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">&lt;div *ngIf=&quot;data.length == 0&quot;&gt;没有更多数据&lt;/div&gt;</pre><div class="contentsignin">登入後複製</div></div><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">&lt;div *ngIf=&quot;data.length &gt; 0; then dataList else noData&quot;&gt;&lt;/div&gt; &lt;ng-template #dataList&gt;课程列表&lt;/ng-template&gt; &lt;ng-template #noData&gt;没有更多数据&lt;/ng-template&gt;</pre><div class="contentsignin">登入後複製</div></div>ng-template 是用來定義模板的,當使用ng-template 定義好一個模板之後,可以用ng-container

templateOutlet

指令來進行使用。

<ng-template #loading>
 <button (click)="login()">login</button>
 <button (click)="sigup()">sigup</button>
</ng-template>
<ng-container *ngTemplateOutlet="loading">
</ng-container>
登入後複製
1.2 [hidden]

#根據條件顯示 DOM 節點或

隱藏

DOM 節點(display)。

<div [hidden]="data.length == 0">课程列表</div>
<div [hidden]="data.length > 0">没有更多数据</div>
登入後複製
1.3 *ngFor

#遍歷資料產生HTML結構

interface List {
  id: number
  name: string
  age: number
}

list: List[] = [
  { id: 1, name: "张三", age: 20 },
  { id: 2, name: "李四", age: 30 }
]
登入後複製
<li
    *ngFor="
      let item of list;
      let i = index;
      let isEven = even;
      let isOdd = odd;
      let isFirst = first;
      let isLast = last;
    "
  >
  </li>
登入後複製
<li *ngFor="let item of list; trackBy: identify"></li>
登入後複製
identify(index, item){
  return item.id; 
}
登入後複製
#2、自訂指令

需求:為元素設定預設背景顏色,滑鼠移入時的背景顏色以及移出時的背景顏色。
<div [appHover]="{ bgColor: &#39;skyblue&#39; }">Hello Angular</div>
登入後複製
import { AfterViewInit, Directive, ElementRef, HostListener, Input } from "@angular/core"

// 接收参的数类型
interface Options {
  bgColor?: string
}

@Directive({
  selector: "[appHover]"
})
export class HoverDirective implements AfterViewInit {
  // 接收参数
  @Input("appHover") appHover: Options = {}
  // 要操作的 DOM 节点
  element: HTMLElement
	// 获取要操作的 DOM 节点
  constructor(private elementRef: ElementRef) {
    this.element = this.elementRef.nativeElement
  }
	// 组件模板初始完成后设置元素的背景颜色
  ngAfterViewInit() {
    this.element.style.backgroundColor = this.appHover.bgColor || "skyblue"
  }
	// 为元素添加鼠标移入事件
  @HostListener("mouseenter") enter() {
    this.element.style.backgroundColor = "pink"
  }
	// 为元素添加鼠标移出事件
  @HostListener("mouseleave") leave() {
    this.element.style.backgroundColor = "skyblue"
  }
}
登入後複製

管道 Pipe


#管道的作用是
格式化元件模板資料

1、內建管道

  • #date 日期格式化
  • #currency 貨幣格式化
  • uppercase 轉大寫
  • lowercase 轉小寫
  • #json格式化json 資料

{{ date | date: "yyyy-MM-dd" }}
登入後複製
2、自訂管道

需求:指定字串不能超過規定的長度

更多程式相關知識,請造訪:

程式設計影片###! ! ###

以上是angular學習之聊指令與管道的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!