A Gyermek megtekintése és a Gyermekek megtekintése Angular dekoratőrök kerülnek megvitatásra, a gyakorlati megvalósítás az Angular használatával.
Áttekintés
- Ha olyan DOM-elemeket szeretnénk elérni, amelyek ugyanazon vagy gyermekkomponens HTML-sablonjában találhatók. Ebben az esetben használhatjuk a Gyermek megtekintése és a Gyermekek megtekintése dekorátorokat.
- Továbbá, ha hozzá akarunk férni a gyermekkomponens tulajdonságaihoz és metódusaihoz, ez lehetséges a Gyermek megtekintése és a Gyermekek megtekintése díszítőkkel.
Megvalósítás
Gyermekkomponens HTML-fájl
<div class="alert alert-secondary" role="alert" style="padding: 30px;margin: 40px;"> <h3 #childheading>Child Component</h3> </div>
- Itt, amint látjuk, van egy címsorelem és egy referenciaváltozónk hash-sel és névvel, mint gyermekfejléc.
- Tegyük fel, hogy hozzá akarunk férni ehhez a címsor DOM-elemhez ahhoz, hogy a gyermekkomponens típusú szkriptfájlban a Gyermekdekorátor megtekintése funkciót használjuk, ahogy az alábbiakban bemutattam.
Gyermekkomponens TypeScript fájl
import { Component, ElementRef, Renderer2, ViewChild} from '@angular/core'; @Component({ selector: 'app-child', templateUrl: './child.component.html', styleUrls: ['./child.component.css'] }) export class ChildComponent { //View Child @ViewChild("childheading") childheading!: ElementRef; constructor(private renderer: Renderer2) { } ngOnInit(): void { } ngAfterViewInit(): void { console.log(this.childheading) //ViewChild this.renderer.setStyle(this.childheading.nativeElement, 'background-color', 'red'); } }
- 1. sor – Importálja a ViewChild-t, az ElementRef-et és a Renderer2-t az angular core könyvtárból.
- 10. sor – Hozzon létre ViewChild elemet, amely egy ElementRef típusú, és tegye idézőjelbe a referenciaváltozót a ViewChild belsejébe.
- 12. sor – Injektálja be a Renderer2-t a konstruktorba, amelyet a DOM elem tulajdonságainak megváltoztatására fogunk használni.
- Ezt követően használja az ngAfterViewInit szögletes életciklus-hook-ot, amellyel elérjük a HTML DOM elemet, amikor az meg lesz jelenítve és inicializálva.
- 21. sor – a konzol naplózza az utódfejlécet, hogy megtekinthesse az adott tulajdonság részleteit a böngésző vizsgálati szakaszában.
- Itt, a konzol szakaszon belül láthatjuk az ElementRef-et és a natív elemet, amikor az alkalmazásunkat futtatjuk, és számos tulajdonság érhető el és módosítható, ahogy az alábbiakban bemutattam.
- 24. sor – Állítson be különböző stílusokat egy natív elemhez olyan megjelenítők segítségével, mint a betűtípus, a háttérszín és még sok más.
Tegyük fel, hogy egy másik címsorhoz szeretnénk hozzáférni ugyanazzal a hivatkozási változóval, például egy gyermek címsorhoz, amely nem lehetséges a Gyermekek megtekintése funkcióval, ehhez a Gyermekek megtekintése funkciót kell használnunk, mert a Gyermekek megtekintése csak az első egyező DOM hivatkozási elemre mutat.
Kezdjük el a Gyermekek megtekintése megvalósítását
Gyermekkomponens HTML-fájl
<div class="alert alert-secondary" role="alert" style="padding: 30px;margin: 40px;"> <h3 #childheading>Child Component</h3> <h3 #childheading> Demo </h3> </div>
- Itt láthatjuk, hogy most két címsor van ugyanazzal a sablon referenciaváltozóval, és a Gyermekek megtekintése funkcióval mindegyikhez különböző tulajdonságokat fogunk beállítani.
Gyermekkomponens TypeScript fájl
import { Component, QueryList, Renderer2, ViewChildren } from '@angular/core'; @Component({ selector: 'app-child', templateUrl: './child.component.html', styleUrls: ['./child.component.css'] }) export class ChildComponent { //View Children @ViewChildren("childheading") childheading!: QueryList<any>; constructor(private renderer: Renderer2) { } ngOnInit(): void { } ngAfterViewInit(): void { console.log(this.childheading) //ViewChildren this.renderer.setStyle(this.childheading.first.nativeElement, 'color', 'red'); this.renderer.setStyle(this.childheading.last.nativeElement, 'color', 'blue'); } }
- 1. sor – Importálja a QueryList-et, a Renderer2-t és a ViewChildren-t az Angular core könyvtárból.
- 10. sor – Hozzon létre egy ViewChildren objektumot, amely egy QueryList‹any› típusú, és helyezzen bele egy sablon referenciaváltozót.
- 12. sor – Renderer2 beszúrása a konstruktorba
- 20. sor – Az ngAfterViewInit Angular lifecycle hook használata, amely az elemek inicializálásakor aktiválódik.
- 21. sor – A konzol naplózza a gyermek fejlécet, és ennek részleteit láthatjuk az alkalmazás futtatásakor.
Itt láthatja a lekérdezési listát két natív elemrészlettel, első és utolsó.
- 24:25 sor – Állítson be különböző stílusokat vagy bármit a tulajdonság alapján az első és az utolsó elemhez.
Ez a DOM-elemek ViewChild és View Children használatával való eléréséről szól.
Most a gyermekkomponens metódusát a szülőkomponensbe fogjuk elérni a Gyermekek megtekintése díszítő segítségével.
Gyermekkomponens HTML-fájl
<div class="alert alert-secondary" role="alert" style="padding: 30px;margin: 40px;"> <h3>Child Component</h3> <h5>{{message}}</h5> </div>
- Itt, amint látható, csak karakterlánc-interpolációt használunk, és megjelenítjük az üzenetet, amikor a metódus végrehajtódik.
Gyermekkomponens TypeScript fájl
import { Component } from '@angular/core'; @Component({ selector: 'app-child', templateUrl: './child.component.html', styleUrls: ['./child.component.css'] }) export class ChildComponent { message : string = ""; constructor() { } ngOnInit(): void { } //Child Method childMethod() { this.message = 'Hi, Parent Component Invoke Child Method...'; } }
- A gyermek komponensen belül deklarálunk egy üzenettulajdonságot és egy gyermek metódust, amelyek csak egy karakterlánc-üzenetet tettek a tulajdonságunkba, és most ezt a gyermek metódust fogjuk végrehajtani a szülőkomponensből.
Szülőkomponens TypeScript fájl
import { Component, ViewChild } from '@angular/core'; import { ChildComponent } from './child/child.component'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'viewchildandchildrendemo'; @ViewChild("childMethod") method! : ChildComponent parentFunction() { this.method.childMethod(); } }
- Itt csak létrehozunk egy View Child objektumot, amely egyfajta gyermekkomponens, és megadjuk a metódus nevét, amelyet el szeretnénk érni.
- Ezután hozzon létre egy szülőfüggvényt, és hívja meg benne a gyermekkomponens metódust.
Szülőkomponens HTML-fájl
<nav class="navbar navbar-light bg-light" style="padding: 30px;margin: 40px; justify-content:center"> <span class="navbar-brand mb-0 h1">Angular Component Communication</span> </nav> <div class="alert alert-primary" role="alert" style="padding: 30px;margin: 40px;"> <h3>Parent Component</h3> <button (click) = "parentFunction()">Call child component method</button> </div> <app-child #childMethod></app-child>
- A HTML-fájlon belül a gyermekkomponenst a szögkiválasztó és a gyermek metódus referenciaváltozója segítségével hívjuk meg.
- Ezenkívül hozzon létre egy gombot eseménykötéssel, és hívja meg a szülő függvényt, amely a gyermek metódusra mutat.
Tehát itt minden a Gyermekek megtekintése és a Gyermekek megtekintése.
GitHub Link
https://github.com/Jaydeep-007/ViewChildAndChildrenDemo
Kellemes kódolást!