【发布时间】:2018-03-29 00:06:34
【问题描述】:
我遇到了一些麻烦,我似乎无法弄清楚为什么我的@ViewChild 不起作用..
基本上我想从另一个组件调用一个组件中的函数,所以在我的sidebar 组件中我有一个名为sendData() 的函数,我希望能够通过单击我的header 组件中的按钮调用它所以我所做的是..
侧边栏组件
import { Component, OnInit, Input, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';
import * as _ from 'lodash';
@Component({
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss']
})
export class SidebarComponent implements OnInit, OnChanges {
constructor(
private contenfulService: ContentfulService,
private userService: UserService
) { }
ngOnInit() {
}
sendData(){
...do something
}
}
header.component.ts
import { Component, OnInit, Input, ViewChild, EventEmitter } from '@angular/core';
import { UserService } from '../../../user.service';
import { SidebarComponent } from '../sidebar/sidebar.component';
@Component({
selector: 'app-program-header',
templateUrl: './program-header.component.html',
styleUrls: ['./program-header.component.scss']
})
export class ProgramHeaderComponent implements OnInit {
@ViewChild(SidebarComponent) sidebar;
constructor() { }
ngOnInit() {
}
}
header.component.html
<div (click)="sidebar.sendData()"></div>
但它不起作用我在控制台中收到此错误...
ERROR TypeError: Cannot read property 'sendData' of undefined
为简洁起见,我删除了代码,如果您需要更多信息,请告诉我
我不确定是什么问题?
编辑
或者如果有人知道从单独的组件调用函数的另一种方法,请告诉我
任何帮助将不胜感激!
谢谢!
【问题讨论】:
-
函数
goToWeek在哪里定义?它是如何被调用的? -
@Pengyy 抱歉看到更新的问题,我输入了错误的函数名称
-
你能发布整个标题组件的模板吗?
-
@Pengyy 请查看更新后的问题
-
用侧边栏发布完整的 header.component.html。
标签: javascript angular typescript