Output Decoratorin käyttäminen Angularissa

Output Decoratorin käyttäminen Angularissa
Kaltaisesi lukijat auttavat tukemaan MUO:ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Angularissa verkkosivu voi sisältää monia erilaisia ​​uudelleenkäytettäviä komponentteja. Jokainen komponentti sisältää yleensä oman TypeScript-logiikkansa, HTML-mallinsa ja CSS-tyylinsä.





Voit myös käyttää uudelleen komponentteja muiden komponenttien sisällä. Tässä tapauksessa voit käyttää Output-decoratoria lähettääksesi tietoja alakomponentista takaisin sen pääkomponenttiin.





Voit myös käyttää Output-dekoraattoria kuunnellaksesi alikomponentissa tapahtuvia tapahtumia.





omenakello 6 alumiini vs ruostumaton teräs

Tulosteen koristelun lisääminen lapsikomponenttiin

Ensin sinun on luotava uusi Angular-sovellus, jossa on yläkomponentti ja alakomponentti.

Kun sinulla on ylä- ja alakomponentti, voit käyttää Output-dekoraattoria tietojen siirtämiseen ja tapahtumien kuuntelemiseen näiden kahden komponentin välillä.



  1. Luoda uusi Kulmasovellus . Oletuksena 'app' on juurikomponentin nimi. Tämä komponentti sisältää kolme päätiedostoa: 'app.component.html', 'app.component.css' ja 'app.component.ts'.
  2. Tässä esimerkissä 'sovellus'-komponentti toimii pääkomponenttina. Korvaa koko 'app.component.html' -tiedoston sisältö seuraavalla:
     <div class="parent-component"> 
      <h1> This is the parent component </h1>
    </div>
  3. Lisää tyyliä yläsovelluksen komponenttiin 'app.component.css':ssä:
     .parent-component { 
      font-family: Arial, Helvetica, sans-serif;
      background-color: lightcoral;
      padding: 20px
    }
  4. Käytä 'ng generoida komponentti' -komentoa Luo uusi Angular-komponentti kutsutaan 'tietokomponentiksi'. Tässä esimerkissä 'data-komponentti' edustaa alikomponenttia.
     ng g c data-component
  5. Lisää sisältöä alikomponenttiin tiedostossa 'data-component.component.html'. Korvaa nykyinen sisältö lisätäksesi uuden painikkeen. Sido painike toimintoon, joka käynnistyy, kun käyttäjä napsauttaa sitä:
     <div class="child-component"> 
      <p> This is the child component </p>
      <button (click)="onButtonClick()">Click me</button>
    </div>
  6. Lisää tyyliä alikomponenttiin tiedostossa 'data-component.component.css':
     .child-component { 
      font-family: Arial, Helvetica, sans-serif;
      background-color: lightblue;
      margin: 20px;
      padding: 20px
    }
  7. Lisää onButtonClick()-funktio komponentin TypeScript-tiedostoon kohdassa 'data-component.component.ts':
     onButtonClick() { 
    }
  8. Lisää edelleen TypeScript-tiedostoon 'Output' ja 'EventEmitter' tuontiluetteloon:
     import { Component, Output, EventEmitter, OnInit } from '@angular/core';
  9. Määritä DataComponentComponent-luokassa Output-muuttuja komponentille nimeltä 'buttonWasClicked'. Tästä tulee EventEmitter. EventEmitter on sisäänrakennettu luokka, jonka avulla voit ilmoittaa toiselle komponentille, kun tapahtuma tapahtuu.
     export class DataComponentComponent implements OnInit { 
      @Output() buttonWasClicked = new EventEmitter<void>();
      // ...
    }
  10. Käytä 'buttonWasClicked' -tapahtumalähetintä onButtonClick()-funktion sisällä. Kun käyttäjä napsauttaa painiketta, datakomponentti lähettää tämän tapahtuman pääsovelluskomponenttiin.
     onButtonClick() { 
        this.buttonWasClicked.emit();
    }

Lapsikomponentin tapahtumien kuunteleminen yläkomponentista

Jos haluat käyttää alikomponentin Output-ominaisuutta, sinun on kuunneltava pääkomponentin lähettämää tapahtumaa.

  1. Käytä 'app.component.html' -tiedoston alikomponenttia. Voit lisätä 'buttonWasClicked'-tulosteen ominaisuutena luodessasi HTML-tunnistetta. Sido tapahtuma uuteen funktioon.
     <app-data-component (buttonWasClicked)="buttonInChildComponentWasClicked()"></app-data-component>
  2. Lisää 'app.component.ts' -kohtaan uusi toiminto, joka käsittelee painikkeen napsautustapahtumaa, kun se tapahtuu alikomponentissa. Luo viesti, kun käyttäjä napsauttaa painiketta.
     message: string = "" 

    buttonInChildComponentWasClicked() {
        this.message = 'The button in the child component was clicked';
    }
  3. Näytä viesti tiedostossa 'app.component.html':
     <p>{{message}}</p>
  4. Suorita Angular-sovellus kirjoittamalla 'ng serve' -komento terminaaliin. Avaa se verkkoselaimella osoitteessa localhost:4200. Pää- ja lapsikomponentit käyttävät erilaisia ​​taustavärejä, jotta ne on helpompi erottaa toisistaan.
  5. Klikkaa Napsauta minua -painiketta. Alikomponentti lähettää tapahtuman pääkomponentille, joka näyttää viestin.

Tietojen lähettäminen lapsikomponentista yläkomponenttiin

Voit myös lähettää tietoja alikomponentista pääkomponenttiin.





  1. Lisää kohtaan 'data-component.component.ts' muuttuja, joka tallentaa tietoja sisältävien merkkijonojen luettelon.
     listOfPeople: string[] = ['Joey', 'John', 'James'];
  2. Muokkaa buttonWasClicked-tapahtumalähettimen palautustyyppiä. Muuta se voidista merkkijonoksi[], jotta se vastaa edellisessä vaiheessa ilmoittamaasi merkkijonoluetteloa:
     @Output() buttonWasClicked = new EventEmitter<string[]>();
  3. Muokkaa onButtonClick()-funktiota. Kun lähetät tapahtuman pääkomponenttiin, lisää tiedot argumenttina emit()-funktioon:
     onButtonClick() { 
        this.buttonWasClicked.emit(this.listOfPeople);
    }
  4. Muokkaa 'app.component.html' -tunnistetta 'app-data-component'. Lisää '$event' buttonInChildComponentWasClicked() -funktioon. Tämä sisältää alikomponentista lähetetyt tiedot.
     <app-data-component (buttonWasClicked)="buttonInChildComponentWasClicked($event)"></app-data-component>
  5. Päivitä 'app.component.ts'-tiedoston toiminto lisätäksesi parametrin tiedoille:
     buttonInChildComponentWasClicked(dataFromChild: string[]) { 
        this.message = 'The button in the child component was clicked';
    }
  6. Lisää uusi muuttuja nimeltä 'data' tallentaaksesi alikomponentista tulevat tiedot:
     message: string = "" 
    data: string[] = []

    buttonInChildComponentWasClicked(dataFromChild: string[]) {
        this.message = 'The button in the child component was clicked';
        this.data = dataFromChild;
    }
  7. Näytä tiedot HTML-sivulla:
     <p>{{data.join(', ')}}</p>
  8. Suorita Angular-sovellus kirjoittamalla 'ng serve' -komento terminaaliin. Avaa se verkkoselaimella osoitteessa localhost:4200.
  9. Klikkaa Napsauta minua -painiketta. Lapsikomponentti lähettää tiedot alikomponentista pääkomponenttiin.

Tietojen lähettäminen muille komponenteille Output Decoratorin avulla

Angularissa voit käyttää muitakin koristeita, kuten Input-sisustimen tai Komponenttisisustimen. Saat lisätietoja siitä, kuinka voit käyttää muita Angularin sisustajia koodin yksinkertaistamiseksi.