Bagaimana untuk berkomunikasi antara komponen ibu bapa dan anak Angular? Analisis ringkas tentang kaedah penyampaian nilai daripada bapa kepada anak lelaki

青灯夜游
Lepaskan: 2021-08-10 10:02:07
ke hadapan
1872 orang telah melayarinya

SudutBagaimana untuk berkomunikasi antara komponen ibu bapa dan anak? Artikel ini akan memperkenalkan anda kepada kaedah pemindahan nilai komponen induk-anak Angular.

Bagaimana untuk berkomunikasi antara komponen ibu bapa dan anak Angular? Analisis ringkas tentang kaedah penyampaian nilai daripada bapa kepada anak lelaki

Melalui nilai melalui Input dan Ouput

Komponen induk: html dan ts

<app-liftcycle [name]="name" (changeName)="changeName($event)"></app-liftcycle>
Salin selepas log masuk
public name: string = "jack";
public changeName(value: string) {
    this.name = value;
}
Salin selepas log masuk

Subkomponen: html dan ts

<div (click)="emit()">{{name}}</div>
Salin selepas log masuk
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属性");
}
Salin selepas log masuk

[Cadangan tutorial berkaitan: "tutorial sudut"]

Dengar perubahan dalam sifat melalui penetap

Komponen induk adalah sama seperti di atas, komponen anak:

private _name: string = "";
@Input() 
public get name(): string {
    return this._name;
}
public set name(value: string) {
    this._name = value + "定义结构";
}
Salin selepas log masuk

Pantau perubahan dalam atribut input melalui fungsi cangkuk ngOnChanges

ngOnChanges sedang mendengar berbilang Apabila menetapkan atribut, ia lebih mudah daripada kaedah penetap.

@Input() name: string;
ngOnChanges(changes: SimpleChanges): void {
    (({name}) => {
        console.log(name.currentValue,name.previousValue);
    })(changes);
}
Salin selepas log masuk

Kaedah dan sifat komponen anak dipanggil melalui pembolehubah templat dalam html komponen induk.

Pembolehubah templat mendapat rujukan kepada komponen anak. Komponen induk:

<app-liftcycle #child></app-liftcycle>
<button (click)="child.childFn()">按钮</button>
Salin selepas log masuk

Komponen anak:

public childFn() {
    console.log("通过模板变量调用子组件中的方法");
}
Salin selepas log masuk

Komponen induk mendapatkan contoh komponen anak melalui ViewChild

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

Berkomunikasi melalui perkhidmatan

perkhidmatan:

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");
    }
}
Salin selepas log masuk

Komponen induk:

constructor(private commun: CommunService) { }
public send(): void {
    this.commun.communSend();
}
Salin selepas log masuk

Komponen kanak-kanak:

constructor(private commun: CommunService) { 
    this.commun.commun.subscribe((value) => {console.log(value)});
}
Salin selepas log masuk

Kaedah pemindahan komponen induk

Komponen induk menghantar kaedah kepada komponen anak melalui atribut, dan komponen anak memanggilnya Ini biasanya tidak disyorkan. Mungkin pengikatan berdasarkan ini adalah rumit, jadi sudut tidak disyorkan. Kemunculan React Hooks juga sebahagiannya disebabkan oleh Inilah kerumitan kelas kelas. Komponen induk:

<app-liftcycle [send]="send.bind(this)"></app-liftcycle>
Salin selepas log masuk
public name: string = "jack";
public send(): void {
    console.log(this.name);
}
Salin selepas log masuk

Komponen anak:

<button (click)="childSend()">childSend</button>
Salin selepas log masuk
@Input() send: Function;
public childSend() {
    this.send();
}
Salin selepas log masuk

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !

Atas ialah kandungan terperinci Bagaimana untuk berkomunikasi antara komponen ibu bapa dan anak Angular? Analisis ringkas tentang kaedah penyampaian nilai daripada bapa kepada anak lelaki. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan