angular6 - 父组件的变量不能在子组件中访问
问题描述
我需要在我的 RolesComponent 中检查这个加载的变量是真还是假。
但我收到此错误:
ERROR TypeError: Cannot read property 'loaded' of undefined
这些是我尝试过的代码
用户
@Component({
selector: 'app-users',
templateUrl: './users.component.html',
styleUrls: ['./users.component.css']
})
export class UsersComponent implements OnInit {
events = [];
loaded:boolean = false;
constructor(private _eventService: UserService) { }
ngOnInit() {
this._eventService.getEvents()
.subscribe(
res => {
this.events = res;
this.loaded = true;
console.log(this.loaded);
},
err => console.log(err)
);
}
}
users.component.html
<div class="card-body">
<h5 class="card-title">{{ event.name }}</h5>
<p class="card-text">{{ event.description }}</p>
角色
import { Component, AfterViewInit, ViewChild } from '@angular/core';
import { UsersComponent } from '../events/users.component';
export class RolesComponent implements AfterViewInit {
@ViewChild(UsersComponent) event;
constructor() { }
loaded: boolean;
ngAfterViewInit() {
console.log(this.event.loaded);
this.loaded = this.event.loaded;
}
}
角色.component.html
<div class="wrapper" *ngIf="loaded">
解决方案
@ViewChild 用于在父组件中引用子组件。
@ViewChild 将在父组件中查找子组件的引用。
您必须确保在父 HTML 中使用了您为子组件定义的子选择器。您必须编写此代码,以便 if 将您的 @ViewChild 对象与该组件映射。
因此,只需确保您在父 HTML 中添加了子选择器。
如果您在 HTML 中编写了相同的内容,则可能存在加载顺序问题。
推荐阅读
- javascript - 如何在另一个组件角度10中渲染组件
- vba - 从外部非 Office 程序发送邮件时如何触发 Outlook 的 Application_ItemSend?
- javascript - 从 .getJSON 的结果中设置变量值
- json - 强制 FACEBOOK GRAPH API 显示个人资料 url 图片,而不是下载它
- typescript - 如何在 Vuex 的操作中使用 axios 获取 RestAPI 数据?
- jquery - 来自 API 请求的 JQUERY 数据表
- python - Discord.py:想要将 message.content 读取为小写,.lower() 不起作用
- node.js - 节点 AWS Lambda 没有执行一些异步代码
- reactjs - 错误:`createDraft` 的第一个参数必须是普通对象、数组或可浸入对象
- macos - 安装并启用 intl 扩展(用于验证器)。- MAC(Prestashop)