Wie kann ich @ViewChild in einer anderen Komponente anzeigen?

Antwort

Um ein Element, das mit `@ViewChild` in einer Angular-Komponente referenziert wird, in einer anderen Komponente anzuzeigen, kannst du die folgenden Schritte befolgen: 1. **Erstelle eine gemeinsame Service-Datei**: Diese Datei wird verwendet, um die Daten zwischen den Komponenten zu teilen. ```typescript // shared.service.ts import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class SharedService { private elementSource = new BehaviorSubject<any>(null); currentElement = this.elementSource.asObservable(); changeElement(element: any) { this.elementSource.next(element); } } ``` 2. **Referenziere das Element mit `@ViewChild` in der ersten Komponente** und übergebe es an den Service: ```typescript // first.component.ts import { Component, ViewChild, AfterViewInit } from '@angular/core'; import { SharedService } from './shared.service'; @Component({ selector: 'app-first', templateUrl: './first.component.html' }) export class FirstComponent implements AfterViewInit { @ViewChild('myElement') myElement: any; constructor(private sharedService: SharedService) {} ngAfterViewInit() { this.sharedService.changeElement(this.myElement); } } ``` ```html <!-- first.component.html --> <div #myElement> <!-- Inhalt des Elements --> </div> ``` 3. **Empfange das Element in der zweiten Komponente** und zeige es an: ```typescript // second.component.ts import { Component, OnInit } from '@angular/core'; import { SharedService } from './shared.service'; @Component({ selector: 'app-second', templateUrl: './second.component.html' }) export class SecondComponent implements OnInit { element: any; constructor(private sharedService: SharedService) {} ngOnInit() { this.sharedService.currentElement.subscribe(element => { this.element = element; }); } } ``` ```html <!-- second.component.html --> <div *ngIf="element"> <!-- Hier kannst du das Element anzeigen --> {{ element.nativeElement.innerHTML }} </div> ``` Mit diesem Ansatz kannst du ein Element, das in einer Komponente referenziert wird, in einer anderen Komponente anzeigen. Beachte, dass du möglicherweise Anpassungen vornehmen musst, um das Element korrekt darzustellen, je nachdem, was genau du anzeigen möchtest.

Frage stellen und sofort Antwort erhalten