Heim > Web-Frontend > js-Tutorial > Hauptteil

Beim Angular Learning geht es um Anweisungen und Pipelines

青灯夜游
Freigeben: 2022-05-17 11:01:57
nach vorne
1546 Leute haben es durchsucht

Dieser Artikel führt Sie zum Verständnis der Richtlinie und des Rohrs in eckig und stellt die relevanten Wissenspunkte kurz vor: Einbauanweisungen und benutzerdefinierte Anweisungen, eingebaute Rohre und benutzerdefinierte Rohre. Ich hoffe, dass er für alle hilfreich ist. !

Beim Angular Learning geht es um Anweisungen und Pipelines

Direktive Direktive


Die Direktive ist die von Angular bereitgestellte Möglichkeit, DOM zu manipulieren. Anweisungen sind in Attributanweisungen und Strukturanweisungen unterteilt. 操作 DOM 的途径。指令分为属性指令结构指令

  • 属性指令:修改现有元素的外观或行为,使用 [] 包裹。

  • 结构指令:增加、删除 DOM 节点以修改布局,使用*作为指令前缀。【相关教程推荐:《angular教程》】

1、内置指令

1.1 *ngIf

根据条件渲染 DOM 节点或移除 DOM 节点。

<div *ngIf="data.length == 0">没有更多数据</div>
Nach dem Login kopieren
<div *ngIf="data.length > 0; then dataList else noData"></div>
<ng-template #dataList>课程列表</ng-template>
<ng-template #noData>没有更多数据</ng-template>
Nach dem Login kopieren

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>
Nach dem Login kopieren

1.2 [hidden]

根据条件显示 DOM 节点或隐藏 DOM 节点 (display)。

<div [hidden]="data.length == 0">课程列表</div>
<div [hidden]="data.length > 0">没有更多数据</div>
Nach dem Login kopieren

1.3 *ngFor

遍历数据生成HTML结构

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

list: List[] = [
  { id: 1, name: "张三", age: 20 },
  { id: 2, name: "李四", age: 30 }
]
Nach dem Login kopieren
<li
    *ngFor="
      let item of list;
      let i = index;
      let isEven = even;
      let isOdd = odd;
      let isFirst = first;
      let isLast = last;
    "
  >
  </li>
Nach dem Login kopieren
<li *ngFor="let item of list; trackBy: identify"></li>
Nach dem Login kopieren
identify(index, item){
  return item.id; 
}
Nach dem Login kopieren

2、自定义指令

需求:为元素设置默认背景颜色,鼠标移入时的背景颜色以及移出时的背景颜色。

<div [appHover]="{ bgColor: &#39;skyblue&#39; }">Hello Angular</div>
Nach dem Login kopieren
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"
  }
}
Nach dem Login kopieren

管道 Pipe


管道的作用是格式化组件模板数据

    Attribute-Direktive: Um das Aussehen oder Verhalten eines vorhandenen Elements zu ändern, verwenden Sie [], um es zu umschließen. Strukturanweisungen: Fügen Sie DOM-Knoten hinzu und löschen Sie sie, um das Layout zu ändern. Verwenden Sie * als Anweisungspräfix. [Verwandte Tutorial-Empfehlungen: „

    Angular-Tutorial
      “]
    • 1. Integrierte Anweisungen

    • 1.1 *ngIf
    • Rendering basierend auf Bedingungen < /code> DOM-Knoten oder <code>remove DOM-Knoten.

      {{ date | date: "yyyy-MM-dd" }}
      Nach dem Login kopieren
      <!-- 这是一... -->
      {{&#39;这是一个测试&#39; | summary: 3}}
      Nach dem Login kopieren
    • ng-template wird zum Definieren von Vorlagen verwendet. Nachdem Sie ng-template zum Definieren einer Vorlage verwendet haben, können Sie ng-container verwenden es mit der templateOutlet-Direktive.
    • // 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;;
          }
      }
      Nach dem Login kopieren

      1.2 [versteckt]

    DOM-Knoten anzeigen oder DOM-Knoten ausblenden (Anzeige) basierend auf Bedingungen.

    // app.module.ts
    import { SummaryPipe } from &#39;./summary.pipe&#39;
    @NgModule({
        declarations: [
          SummaryPipe
        ] 
    });
    Nach dem Login kopieren
    1.3 *ngFor

    Durchlaufen Sie die Daten, um eine HTML-Struktur zu generieren

    rrreeerrreeerrreeerrreee

    2. Benutzerdefinierte Anweisungen

    🎜🎜🎜Anforderungen: Legen Sie die Standardhintergrundfarbe für das Element fest, den Hintergrund beim Bewegen der Maus in Farbe und die Hintergrundfarbe beim Herausbewegen. 🎜rrreeerrreee🎜🎜Pipe Pipe🎜🎜🎜🎜🎜Die Funktion von Pipe besteht darin, Komponentenvorlagendaten zu formatieren. 1. Eingebaute Pipeline. Datumsformatierung 🎜🎜🎜🎜JSON-Daten im JSON-Format 🎜 🎜🎜rrreee🎜🎜🎜2. Benutzerdefinierte Pipeline🎜🎜🎜🎜Anforderung: Die angegebene Zeichenfolge darf die angegebene Länge nicht überschreiten. ! 🎜

    Das obige ist der detaillierte Inhalt vonBeim Angular Learning geht es um Anweisungen und Pipelines. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!