Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kommuniziere ich zwischen übergeordneten und untergeordneten Angular-Komponenten? Eine kurze Analyse der Methode zur Weitergabe von Werten vom Vater an den Sohn

青灯夜游
Freigeben: 2021-08-10 10:02:07
nach vorne
1872 Leute haben es durchsucht

AngularWie kommuniziert man zwischen übergeordneten und untergeordneten Komponenten? Dieser Artikel führt Sie in die Wertübertragungsmethode von Angular-Eltern-Kind-Komponenten ein.

Wie kommuniziere ich zwischen übergeordneten und untergeordneten Angular-Komponenten? Eine kurze Analyse der Methode zur Weitergabe von Werten vom Vater an den Sohn

Werte über Eingabe und Ausgabe übertragen

Übergeordnete Komponente: HTML und TS

<app-liftcycle [name]="name" (changeName)="changeName($event)"></app-liftcycle>
Nach dem Login kopieren
public name: string = "jack";
public changeName(value: string) {
    this.name = value;
}
Nach dem Login kopieren

Untergeordnete Komponente: HTML und TS

<div (click)="emit()">{{name}}</div>
Nach dem Login kopieren
import { Component, Input, EventEmitter, Output } from &#39;@angular/core&#39;;
@Input() name: string;
@Output() changeName: EventEmitter<string> = new EventEmitter<string>();
public emit() {
    this.changeName.emit("修改name属性");
}
Nach dem Login kopieren

[Verwandte Tutorial-Empfehlung: „Angular Tutorial“]

Durch Setter Auf Änderungen in Attributen warten

Die übergeordnete Komponente ist die gleiche wie oben, die untergeordnete Komponente:

private _name: string = "";
@Input() 
public get name(): string {
    return this._name;
}
public set name(value: string) {
    this._name = value + "定义结构";
}
Nach dem Login kopieren

Überwachen von Änderungen in Eingabeattributen über die Hook-Funktion ngOnChanges

ngOnChanges ist bei der Überwachung mehrerer Elemente einfacher als die Setter-Methode Attribute.

@Input() name: string;
ngOnChanges(changes: SimpleChanges): void {
    (({name}) => {
        console.log(name.currentValue,name.previousValue);
    })(changes);
}
Nach dem Login kopieren

Rufen Sie die Methoden und Eigenschaften der untergeordneten Komponente über Vorlagenvariablen im HTML der übergeordneten Komponente auf.

Die Vorlagenvariable erhält einen Verweis auf die untergeordnete Komponente. Übergeordnete Komponente:

<app-liftcycle #child></app-liftcycle>
<button (click)="child.childFn()">按钮</button>
Nach dem Login kopieren

Untergeordnete Komponente:

public childFn() {
    console.log("通过模板变量调用子组件中的方法");
}
Nach dem Login kopieren

Die übergeordnete Komponente erhält die Instanz der untergeordneten Komponente über ViewChild

<app-liftcycle [name]="name" (changeName)="changeName($event)" #child></app-liftcycle>
<button (click)="childFn()">childFn</button>
Nach dem Login kopieren
@ViewChild("child") child: LiftcycleComponent;
public childFn(): void {
    this.child.childFn();
}
Nach dem Login kopieren

Kommuniziert über den Dienst

Dienst:

import { Subject } from &#39;rxjs&#39;;
import { Injectable } from &#39;@angular/core&#39;;

@Injectable({
    providedIn: &#39;root&#39;
})
export class CommunService {

    constructor() {}
    public commun = new Subject<string>();
    communSend() {
        this.commun.next("send");
    }
}
Nach dem Login kopieren

Übergeordnete Komponente:

constructor(private commun: CommunService) { }
public send(): void {
    this.commun.communSend();
}
Nach dem Login kopieren

Untergeordnete Komponente:

constructor(private commun: CommunService) { 
    this.commun.commun.subscribe((value) => {console.log(value)});
}
Nach dem Login kopieren

Übertragungsmethode der übergeordneten Komponente

Die übergeordnete Komponente übergibt die Methode über Attribute an die untergeordnete Komponente, und die untergeordnete Komponente ruft sie auf. Diese Kommunikationsmethode wird im Allgemeinen nicht empfohlen. Es kann sein, dass die darauf basierende Bindung kompliziert ist, sodass eine eckige Bindung nicht zu empfehlen ist. Die Entstehung von React Hooks ist teilweise auch darauf zurückzuführen Das ist die Komplexität der Klassenklasse. Übergeordnete Komponente:

<app-liftcycle [send]="send.bind(this)"></app-liftcycle>
Nach dem Login kopieren
public name: string = "jack";
public send(): void {
    console.log(this.name);
}
Nach dem Login kopieren

Untergeordnete Komponente:

<button (click)="childSend()">childSend</button>
Nach dem Login kopieren
@Input() send: Function;
public childSend() {
    this.send();
}
Nach dem Login kopieren

Weitere Programmierkenntnisse finden Sie unter: Programmiervideo! !

Das obige ist der detaillierte Inhalt vonWie kommuniziere ich zwischen übergeordneten und untergeordneten Angular-Komponenten? Eine kurze Analyse der Methode zur Weitergabe von Werten vom Vater an den Sohn. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.cn
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