Ich habe versucht, das Kind Komponente @ViewChild mit in Parent-Komponente zuzugreifen (AppComponent.ts)In Angular (Angualr 4) Nicht in der Lage, die ElementRef einer anderen Komponente für den Zugriff auf mit @ViewChild
import { Component, ViewChild, ElementRef, AfterViewInit} from '@angular/core';
import { HeaderComponent } from '../app/components/header/header.component';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
})
export class AppComponent implements AfterViewInit {
title = 'app';
@ViewChild('myHeader') myHeader: ElementRef;
ngAfterViewInit() {
this.myHeader.nativeElement.style.backgroundColor = 'red';
}
}
Eltern HTML (app.component.html)
<div>
<app-header></app-header>
</div>
Jetzt Kind HeaderComponent ist wie folgt:
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.less']
})
export class HeaderComponent implements OnInit {
constructor() {
}
ngOnInit() {
}
}
-Header HTML (header.component.html) (Child)
<div #myHeader> hello</div>
In ngAfterViewInit Funktion this.myHeader.nativeElement schenkt Fehler.
AppComponent_Host.html:1 ERROR TypeError: Cannot read property 'nativeElement' of undefined
at AppComponent.webpackJsonp.../../../../../src/app/app.component.ts.AppComponent.ngAfterViewInit (app.component.ts:12)
at callProviderLifecycles (core.es5.js:11189)
at callElementProvidersLifecycles (core.es5.js:11164)
at callLifecycleHooksChildrenFirst (core.es5.js:11148)
at checkAndUpdateView ....
Obwohl, wenn ich versuchte, jedes Kind in Parent HTML (app.component.html) definiert den Zugriff auf seine wie unten arbeiten:
<div #myHeader> <app-header></app-header></div>
Aber ich möchte in header.component jede ElementRef zuzugreifen. html.Ich habe müde View View Encapsulation auch wie unten.
encapsulation: ViewEncapsulation.None,
in HeaderComponent aber nicht working.Please lassen Sie mich auch wissen, was sonst noch hier bin ich fehlt.
Hoffnung diese Antwort kann hilfreich https://stackoverflow.com/a/39909203/7491209 – Rajez