Angular 学習で命令とパイプラインについて語る

青灯夜游
リリース: 2022-05-17 11:01:57
転載
1575 人が閲覧しました

この記事では、angular のディレクティブとパイプを理解し、関連する知識ポイント (組み込み命令とカスタム命令、組み込みパイプとカスタム パイプ) を簡単に紹介します。役に立ってください!

Angular 学習で命令とパイプラインについて語る

ディレクティブ ディレクティブ


ディレクティブは、DOM を操作するために Angular によって提供される 方法です。命令は、属性命令構造命令に分かれています。

  • #属性ディレクティブ: 既存の要素の外観や動作を変更するには、[] を使用して要素をラップします。

  • 構造命令: DOM ノードを追加および削除してレイアウトを変更します。命令プレフィックスとして # を使用します。 [関連チュートリアルの推奨事項: "angular チュートリアル"]

1. 組み込みの命令

##1.1 *ngIf

条件

に基づいて DOM ノードをレンダリングするか、 DOM ノードを削除します。

<div *ngIf="data.length == 0">没有更多数据</div>
ログイン後にコピー
<div *ngIf="data.length > 0; then dataList else noData"></div>
<ng-template #dataList>课程列表</ng-template>
<ng-template #noData>没有更多数据</ng-template>
ログイン後にコピー

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 ノード ## # (画面)。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:html;toolbar:false;">&lt;div [hidden]=&quot;data.length == 0&quot;&gt;课程列表&lt;/div&gt; &lt;div [hidden]=&quot;data.length &gt; 0&quot;&gt;没有更多数据&lt;/div&gt;</pre><div class="contentsignin">ログイン後にコピー</div></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"
  }
}
ログイン後にコピー

パイプ パイプ


パイプの役割は、
コンポーネント テンプレート データ

をフォーマットすることです。

#1. 組み込みパイプライン

日付形式
  • currency 通貨の書式設定
  • 大文字 大文字に変換
  • 小文字 小文字に変換
  • # json 形式 json データ

  • {{ date | date: "yyyy-MM-dd" }}
    ログイン後にコピー

  • 2. カスタム パイプライン

要件: 指定された文字列は指定された長さを超えることはできません

<!-- 这是一... -->
{{&#39;这是一个测试&#39; | summary: 3}}
ログイン後にコピー
// summary.pipe.ts
import { Pipe, PipeTransform } from &#39;@angular/core&#39;;

@Pipe({
   name: &#39;summary&#39; 
});
export class SummaryPipe implements PipeTransform {
    transform (value: string, limit?: number) {
        if (!value) return null;
        let actualLimit = (limit) ? limit : 50;
        return value.substr(0, actualLimit) + &#39;...&#39;;
    }
}
ログイン後にコピー
// app.module.ts
import { SummaryPipe } from &#39;./summary.pipe&#39;
@NgModule({
    declarations: [
      SummaryPipe
    ] 
});
ログイン後にコピー
プログラミング関連の知識については、

プログラミング ビデオ

をご覧ください。 !

以上がAngular 学習で命令とパイプラインについて語るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!