Gab*_*iel 6 components angular
我想访问#sidenav父组件(toggleSidebar())中的子组件的元素().我尝试应用此解决方案但未成功:angular 2/typescript:获取模板中的元素
我的孩子成分:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-sidebar',
template: `
<md-sidenav #sidenav mode="side" class="app-sidenav">
Sidenav
</md-sidenav>
`,
styleUrls: ['./sidebar.component.css']
})
export class SidebarComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
Run Code Online (Sandbox Code Playgroud)
我的父组件:
import { SidebarComponent } from './sidebar/sidebar.component';
import { Component, ViewChild } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<app-sidebar></app-sidebar>
<app-toolbar (toggleSidebar)="toggleSidebar()"></app-toolbar>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
@ViewChild('sidenav') sidebar: SidebarComponent;
constructor() { }
toggleSidebar() {
this.sidebar.toggle();
}
}
Run Code Online (Sandbox Code Playgroud)
您应该从父级获取子组件
@ViewChild(SidebarComponent, {static: false}) sidebar: SidebarComponent;
Run Code Online (Sandbox Code Playgroud)
所以删除 sidenav
并将其添加到子组件以获取该元素.
@ViewChild(SidebarComponent) sidebar: SidebarComponent;
Run Code Online (Sandbox Code Playgroud)
最后sidenav从父母调用您的子组件字段来做您想做的任何事情.
this.sidebar.sidenav// <-- selects child components element
父母:
@ViewChild('sidenav') sidenav;
Run Code Online (Sandbox Code Playgroud)
儿童:
import { SidebarComponent } from './sidebar/sidebar.component';
import { Component, ViewChild } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<app-sidebar></app-sidebar>
<app-toolbar (toggleSidebar)="toggleSidebar()"></app-toolbar>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
@ViewChild(SidebarComponent) sidebar: SidebarComponent;
constructor() { }
toggleSidebar() {
this.sidebar.sidenav.toggle();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5183 次 |
| 最近记录: |