Inhaltsverzeichnis
组件模板
🎜Komponentenvorlage🎜
Heim Web-Frontend js-Tutorial Eine kurze Analyse der Komponentenvorlagen in Angular

Eine kurze Analyse der Komponentenvorlagen in Angular

May 16, 2022 am 11:02 AM
angular angular.js

Dieser Artikel führt Sie durch die Komponentenvorlagen in Angular und stellt kurz die relevanten Wissenspunkte vor: Datenbindung, Eigenschaftsbindung, Ereignisbindung, bidirektionale Datenbindung, Inhaltsprojektion usw. Ich hoffe, dass er für alle nützlich ist . helfen!

Eine kurze Analyse der Komponentenvorlagen in Angular

Angular ist ein Framework zum Erstellen von Client-Anwendungen unter Verwendung von HTML, CSS, TypeScript Einzelseitige-Anwendungen. [Verwandte Tutorial-Empfehlungen: „HTMLCSSTypeScript 构建客户端应用的框架,用来构建单页应用程序。【相关教程推荐:《angular教程》】

Angular 是一个重量级的框架,内部集成了大量开箱即用的功能模块。

Angular 为大型应用开发而设计,提供了干净且松耦合的代码组织方式,使应用程序整洁更易于维护。

angualr文档:

  • Angular:https://angular.io/

  • Angular 中文:https://angular.cn/

  • Angular CLI:https://cli.angular.io/

  • Angular CLI 中文:https://angular.cn/cli

组件模板

1、数据绑定

数据绑定就是将组件类中的数据显示在组件模板中,当组件类中的数据发生变化时会自动被同步到组件模板中(数据驱动 DOM )。

在 Angular 中使用插值表达式进行数据绑定,即 {<!-- -->{ }}

<h2>{{message}}</h2>
<h2>{{getInfo()}}</h2>
<h2>{{a == b ? &#39;相等&#39;: &#39;不等&#39;}}</h2>
<h2>{{&#39;Hello Angular&#39;}}</h2>
<p [innerHTML]="htmlSnippet"></p> <!-- 对数据中的代码进行转义 -->
Nach dem Login kopieren

2、属性绑定

2.1 普通属性

属性绑定分为两种情况,绑定 DOM 对象属性绑定HTML标记属性

  • 使用 [属性名称] 为元素绑定 DOM 对象属性。

    <img [src]="imgUrl"/>
    Nach dem Login kopieren
  • 使用 [attr.属性名称] 为元素绑定 HTML 标记属性

    <td [attr.colspan]="colSpan"></td>
    Nach dem Login kopieren

在大多数情况下,DOM 对象属性和 HTML 标记属性是对应的关系,所以使用第一种情况。

但是某些属性只有 HTML 标记存在,DOM 对象中不存在,此时需要使用第二种情况,比如 colspan 属性,在 DOM 对象中就没有。

或者自定义 HTML 属性也需要使用第二种情况。

2.2 class 属性

<button class="btn btn-primary" [class.active]="isActive">按钮</button>
<div [ngClass]="{&#39;active&#39;: true, &#39;error&#39;: true}"></div>
Nach dem Login kopieren

2.3 style 属性

<button [style.backgroundColor]="isActive ? &#39;blue&#39;: &#39;red&#39;">按钮</button>
<button [ngStyle]="{&#39;backgroundColor&#39;: &#39;red&#39;}">按钮</button>
Nach dem Login kopieren

3、事件绑定

<button (click)="onSave($event)">按钮</button>
<!-- 当按下回车键抬起的时候执行函数 -->
<input type="text" (keyup.enter)="onKeyUp()"/>
Nach dem Login kopieren
export class AppComponent {
  title = "test"
  onSave(event: Event) {
    // this 指向组件类的实例对象
    this.title // "test"
  }
}
Nach dem Login kopieren

4、获取原生 DOM 对象

4.1 在组件模板中获取

<input type="text" (keyup.enter)="onKeyUp(username.value)" #username/>
Nach dem Login kopieren

4.2 在组件类中获取

使用 ViewChild 装饰器获取一个元素

<p #paragraph>home works!</p>
Nach dem Login kopieren
import { AfterViewInit, ElementRef, ViewChild } from "@angular/core"

export class HomeComponent implements AfterViewInit {
  @ViewChild("paragraph") paragraph: ElementRef<HTMLParagraphElement> | undefined
  ngAfterViewInit() {
    console.log(this.paragraph?.nativeElement)
  }
}
Nach dem Login kopieren

使用 ViewChildren 获取一组元素

<ul>
  <li #items>a</li>
  <li #items>b</li>
  <li #items>c</li>
</ul>
Nach dem Login kopieren
import { AfterViewInit, QueryList, ViewChildren } from "@angular/core"

@Component({
  selector: "app-home",
  templateUrl: "./home.component.html",
  styles: []
})
export class HomeComponent implements AfterViewInit {
  @ViewChildren("items") items: QueryList<HTMLLIElement> | undefined
  ngAfterViewInit() {
    console.log(this.items?.toArray())
  }
}
Nach dem Login kopieren

5、双向数据绑定

数据在组件类和组件模板中双向同步。

Angular 将双向数据绑定功能放在了 @angular/forms 模块中,所以要实现双向数据绑定需要依赖该模块。

import { FormsModule } from "@angular/forms"

@NgModule({
  imports: [FormsModule],
})
export class AppModule {}
Nach dem Login kopieren
<input type="text" [(ngModel)]="username" />
<button (click)="change()">在组件类中更改 username</button>
<div>username: {{ username }}</div>
Nach dem Login kopieren
export class AppComponent {
  username: string = ""
  change() {
    this.username = "hello Angular"
  }
}
Nach dem Login kopieren

6、内容投影

<!-- app.component.html -->
<bootstrap-panel>
	<div class="heading test">
        Heading
  </div>
  <div class="body">
        Body
  </div>
</bootstrap-panel>
Nach dem Login kopieren
<!-- panel.component.html -->
<div class="panel panel-default">
  <div class="panel-heading">
    <ng-content select=".heading"></ng-content>
  </div>
  <div class="panel-body">
    <ng-content select=".body"></ng-content>
  </div>
</div>
Nach dem Login kopieren

如果只有一个ng-content,不需要select属性。

ng-content在浏览器中会被 <div class="heading test"></div>Angular Tutorial

“]
  • Angular ist ein schwergewichtiges Framework, das eine große Anzahl von out-of-the-box Funktionsmodulen integriert.
  • Angular wurde für die Entwicklung umfangreicher Anwendungen entwickelt und bietet eine saubere und lose gekoppelte Code-Organisationsmethode, wodurch die Anwendung aufgeräumter und einfacher zu warten ist.
angualr-Dokumentation:

Angular: https://angular.io/

Angular-Chinesisch: https://angular.cn/

Angular-CLI: https://cli.angular.io /

Angular CLI Chinesisch: https://angular.cn/cli

🎜

🎜Komponentenvorlage🎜

🎜🎜🎜1. Datenbindung🎜🎜🎜🎜Bei der Datenbindung wird die Komponentenklasse eingefügt Die Daten werden in der Komponentenvorlage angezeigt. Wenn sich die Daten in der Komponentenklasse ändern, werden sie automatisch mit der Komponentenvorlage synchronisiert (datengesteuertes DOM). 🎜🎜Verwenden Sie interpolation expression für die Datenbindung in Angular, also {<!-- -->{ }}. 2. Attributbindung >. 🎜
    🎜🎜Verwenden Sie [property name], um DOM-Objekteigenschaften an Elemente zu binden. 🎜
    <!-- app.component.html -->
    <bootstrap-panel>
    	<ng-container class="heading">
            Heading
        </ng-container>
        <ng-container class="body">
            Body
        </ng-container>
    </bootstrap-panel>
    Nach dem Login kopieren
    🎜🎜🎜Verwenden Sie [attr.attribute name], um HTML-Tag-Attribute an Elemente zu binden.🎜
    // app.component.ts
    export class AppComponent {
        task = {
            person: {
                name: &#39;张三&#39;
            }
        }
    }
    Nach dem Login kopieren
    🎜🎜🎜In den meisten Fällen stimmen DOM-Objektattribute und HTML-Tag-Attribute überein. Verwenden Sie daher den ersten Fall . 🎜🎜Einige Attribute existieren jedoch nur in HTML-Tags und nicht in DOM-Objekten. In diesem Fall müssen Sie den zweiten Fall verwenden, z. B. colspan-Attribute existieren nicht in DOM-Objekten. 🎜🎜Oder benutzerdefinierte HTML-Attribute müssen ebenfalls den zweiten Fall verwenden. 🎜🎜🎜2.2 Klassenattribut🎜🎜
    <!-- 方式一 -->
    <span *ngIf="task.person">{{ task.person.name }}</span>
    <!-- 方式二 -->
    <span>{{ task.person?.name }}</span>
    Nach dem Login kopieren
    🎜🎜2.3 Stilattribut🎜🎜
    /* 第一种方式 在 styles.css 文件中 */
    @import "~bootstrap/dist/css/bootstrap.css";
    /* ~ 相对node_modules文件夹 */
    Nach dem Login kopieren
    🎜🎜🎜3. Ereignisbindung🎜🎜🎜
    <!-- 第二种方式 在 index.html 文件中  -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet" />
    Nach dem Login kopieren
    rrree🎜🎜🎜4. Holen Sie sich das native DOM-Objekt🎜🎜 🎜 🎜🎜4.1 Komponentenvorlage abrufen🎜 🎜
    // 第三种方式 在 angular.json 文件中
    "styles": [
      "./node_modules/bootstrap/dist/css/bootstrap.min.css",
      "src/styles.css"
    ]
    Nach dem Login kopieren
    🎜🎜4.2 Holen Sie sich 🎜🎜🎜Verwenden Sie den Dekorator ViewChild, um ein Element zu erhalten. 🎜rrreeerrreee🎜Verwenden Sie ViewChildren, um eine Reihe von Elementen zu erhalten Datenbindung🎜🎜🎜🎜Daten werden in Komponentenklassen und Komponentenvorlagen in beide Richtungen synchronisiert. 🎜🎜Angular platziert die bidirektionale Datenbindungsfunktion im Modul @angular/forms. Um die bidirektionale Datenbindung zu implementieren, müssen Sie sich also auf dieses Modul verlassen. 🎜rrreeerrreeerrreee🎜🎜🎜6. Inhaltsprojektion🎜🎜🎜rrreeerrreee🎜Wenn nur ein NG-Inhalt vorhanden ist, ist das SELECT-Attribut nicht erforderlich. 🎜🎜ng-content wird im Browser durch <div class="heading test"></div> ersetzt. Wenn Sie dieses zusätzliche div nicht möchten, können Sie ng verwenden -container stattdessen dieses div. 🎜🎜🎜ng-content wird normalerweise bei der Projektion verwendet: Wenn die übergeordnete Komponente Daten auf die untergeordnete Komponente projizieren muss, muss sie angeben, wo die Daten auf die untergeordnete Komponente projiziert werden sollen. Zu diesem Zeitpunkt können Sie das ng-content-Tag verwenden um einen Platzhalter zu erstellen, werden keine echten DOM-Elemente generiert, nur der projizierte Inhalt wird kopiert. 🎜🎜ng-container ist ein spezielles Container-Tag, das keine echten DOM-Elemente generiert, daher ist das Hinzufügen von Attributen zum ng-container-Tag ungültig. 🎜🎜rrreee🎜🎜🎜7. Datenbindungsfehlertoleranzverarbeitung🎜🎜🎜rrreeerrreee🎜🎜🎜8. Globaler Stil🎜🎜🎜rrreeerrreee🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmiervideo🎜! ! 🎜

    Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Komponentenvorlagen in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung des Angular Learning State Managers NgRx Detaillierte Erläuterung des Angular Learning State Managers NgRx May 25, 2022 am 11:01 AM

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Angular-Statusmanagers NgRx und stellt Ihnen die Verwendung von NgRx vor. Ich hoffe, er wird Ihnen hilfreich sein!

Angular Learning spricht über eigenständige Komponenten (Standalone Component) Angular Learning spricht über eigenständige Komponenten (Standalone Component) Dec 19, 2022 pm 07:24 PM

Dieser Artikel wird Sie dabei unterstützen, Angular weiter zu lernen und die eigenständige Komponente (Standalone Component) in Angular kurz zu verstehen. Ich hoffe, er wird Ihnen hilfreich sein!

So installieren Sie Angular unter Ubuntu 24.04 So installieren Sie Angular unter Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js ist eine frei zugängliche JavaScript-Plattform zum Erstellen dynamischer Anwendungen. Es ermöglicht Ihnen, verschiedene Aspekte Ihrer Anwendung schnell und klar auszudrücken, indem Sie die Syntax von HTML als Vorlagensprache erweitern. Angular.js bietet eine Reihe von Tools, die Sie beim Schreiben, Aktualisieren und Testen Ihres Codes unterstützen. Darüber hinaus bietet es viele Funktionen wie Routing und Formularverwaltung. In dieser Anleitung wird erläutert, wie Angular auf Ubuntu24 installiert wird. Zuerst müssen Sie Node.js installieren. Node.js ist eine JavaScript-Ausführungsumgebung, die auf der ChromeV8-Engine basiert und es Ihnen ermöglicht, JavaScript-Code auf der Serverseite auszuführen. In Ub sein

Ein Artikel über serverseitiges Rendering (SSR) in Angular Ein Artikel über serverseitiges Rendering (SSR) in Angular Dec 27, 2022 pm 07:24 PM

Kennen Sie Angular Universal? Es kann dazu beitragen, dass die Website eine bessere SEO-Unterstützung bietet!

Wie man PHP und Angular für die Frontend-Entwicklung verwendet Wie man PHP und Angular für die Frontend-Entwicklung verwendet May 11, 2023 pm 04:04 PM

Mit der rasanten Entwicklung des Internets wird auch die Front-End-Entwicklungstechnologie ständig verbessert und iteriert. PHP und Angular sind zwei Technologien, die in der Frontend-Entwicklung weit verbreitet sind. PHP ist eine serverseitige Skriptsprache, die Aufgaben wie die Verarbeitung von Formularen, die Generierung dynamischer Seiten und die Verwaltung von Zugriffsberechtigungen übernehmen kann. Angular ist ein JavaScript-Framework, mit dem Single-Page-Anwendungen entwickelt und komponentenbasierte Webanwendungen erstellt werden können. In diesem Artikel erfahren Sie, wie Sie PHP und Angular für die Frontend-Entwicklung verwenden und wie Sie diese kombinieren

Angular + NG-ZORRO entwickeln schnell ein Backend-System Angular + NG-ZORRO entwickeln schnell ein Backend-System Apr 21, 2022 am 10:45 AM

In diesem Artikel erfahren Sie, wie Sie mit Angular in Kombination mit ng-zorro schnell ein Backend-System entwickeln. Ich hoffe, dass er für alle hilfreich ist.

Eine kurze Analyse der Verwendung des Monaco-Editors in Angular Eine kurze Analyse der Verwendung des Monaco-Editors in Angular Oct 17, 2022 pm 08:04 PM

Wie verwende ich den Monaco-Editor in Angular? Der folgende Artikel dokumentiert die Verwendung des Monaco-Editors in Angular, der kürzlich in einem Unternehmen verwendet wurde. Ich hoffe, dass er für alle hilfreich sein wird!

Eine kurze Analyse unabhängiger Komponenten in Angular und deren Verwendung Eine kurze Analyse unabhängiger Komponenten in Angular und deren Verwendung Jun 23, 2022 pm 03:49 PM

Dieser Artikel führt Sie durch die unabhängigen Komponenten in Angular, wie Sie eine unabhängige Komponente in Angular erstellen und wie Sie vorhandene Module in die unabhängige Komponente importieren. Ich hoffe, er wird Ihnen hilfreich sein!

See all articles