Heim > Web-Frontend > js-Tutorial > Einführung in 5 Methoden der Komponentenkommunikation in Angular

Einführung in 5 Methoden der Komponentenkommunikation in Angular

青灯夜游
Freigeben: 2021-02-01 11:47:48
nach vorne
2343 Leute haben es durchsucht

Einführung in 5 Methoden der Komponentenkommunikation in Angular

Komponentisierung ist das Kernkonzept von Angular, daher wird Komponentenkommunikation häufiger verwendet und ist sehr wichtig.

Offizielles Portal:

https://angular.io/guide/component-interaction

https://angular.cn/guide/component-interaction

Empfohlene Tutorials: „angular Tutorial

Kommunikation zwischen übergeordneter und untergeordneter Komponente Komponente :

// Die Unterkomponente muss Input verwenden, um

<!-- parentComponent -->
<app-child [name]="&#39;childName&#39;"></app-child>
Nach dem Login kopieren
<span>{{name}}</span>
Nach dem Login kopieren

2 zu empfangen. Die Unterkomponente übergibt Daten an die übergeordnete Komponente

【Output EventEmitter】

Unterkomponente:

@Input() public name:string = &#39;&#39;;
Nach dem Login kopieren

Übergeordnete Komponente:

@Output()
public readonly childEmit: EventEmitter<T> = new EventEmitter<T>();

this.childEmit.emit(data);
Nach dem Login kopieren
rrree 3. ViewChild-Methode Deshalb habe ich es hier separat getrennt.

Übergeordnete Komponente:

<app-child (childEmit)="getData($event)"></app-child>
Nach dem Login kopieren
public getData(data:T): void {  }
Nach dem Login kopieren

[Beispiel]

<app-child **#child**></app-child>

<button (click)="**child**.print(&#39;---&#39;)">点击</button>
Nach dem Login kopieren

Nicht-Eltern-Kind-Komponentenkommunikation

1. Der Service

Einzelfallmodus ist tatsächlich eine Variable, die in beide Richtungen ausgelöst werden muss ( Senden von Informationen/Empfangen von Informationen) sowie das Festlegen und Abrufen von Daten müssen von der Komponente selbst durchgeführt werden. service.ts

@ViewChild(&#39;child&#39;, { static: true })
public child!: ElementRef<HTMLElement>;

public print():void{
     if(this.child){
       // 这里得到child,可以使用child中的所有的public属性方法
       this.child.print(&#39;hello2&#39;);
     }
}
Nach dem Login kopieren
Komponente 1 übergibt Informationen an den Dienst

// 父组件
import { Component } from &#39;@angular/core&#39;;

@Component({
  selector: &#39;app-parent&#39;,
  template: `
    <app-child #child [name]="name" (childEmit)="childClick($event)"></app-child>
    <button (click)="child.print(&#39;hello1&#39;)">调用子组件的方法1</button>
    <button (click)="print()">调用子组件的方法2</button>
  `
})

export class ParentComponent {

   public name:string = &#39;大儿子&#39;;
   @ViewChild(&#39;child&#39;, { static: true })
   public child!: ElementRef<HTMLElement>;

   public childClick(bool:Boolean):void{
      // TODO
   }

   public print():void{
      if(this.child){
        this.child.print(&#39;hello2&#39;);
     }
   }
}
/*****************************************************/
// 子组件

import { Component, Input, Output, EventEmitter } from &#39;@angular/core&#39;;

@Component({
  selector: &#39;app-child&#39;,
  template: `
    <h3 (click)="myClick()">{{name}}</h3>
  `
})

export class HeroChildComponent {
  @Input() 
  public name: string;

  @Output()
  public readonly childEmit: EventEmitter<boolean> = new EventEmitter<boolean>();

  public myClick():void{
    this.childEmit.emit(true);
  }

  public print(content:string):void{
    console.log(content);
  }
}
Nach dem Login kopieren

Komponente 2 erhält Informationen vom Dienst
import { Component, Injectable, EventEmitter } from &#39;@angular/core&#39;;

@Injectable()

export class myService {
  public info: string = &#39;&#39;;
}
Nach dem Login kopieren

2. Betreff (veröffentlichen und abonnieren)

Das echte Veröffentlichungs- und Abonnementmodell, wenn sich die Daten ändern, Der Abonnent kann auch eine Antwort erhalten. Hier sind nur Beispiele für Verhalten. Betreff Abonnenten

Betreff

Nein

Nein

Prompte Veröffentlichung. Neue Daten veröffentlichen, sobald sie verfügbar sind

BehaviorSubject

Ja. Die Speicherung des letzten Datenelements bzw. Anfangswertes

wird

rechtzeitig freigegeben. Veröffentlichen, wenn neue Daten verfügbar sind

ReplaySubject

Ja. Alle Daten speichern Nein Zeitgerechte Freigabe. Neue Daten veröffentlichen, sobald sie verfügbar sindAsyncSubjectJa. Das letzte gespeicherte Datenelement ist eine verzögerte Veröffentlichung. Erst wenn die Datenquelle vollständig ist, wird sie freigegeben Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung
Andere Kommunikationsmethoden Routenwertübertragung, lokaler Browserspeicher (LocalStorage, SessionStorage), Cookies.
! !

Das obige ist der detaillierte Inhalt vonEinführung in 5 Methoden der Komponentenkommunikation in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jianshu.com
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