angular - 从角度 4 中的另一个组件更改布尔值
问题描述
我正在使用Booleans
and auserRights.service
来检查导航点是显示还是隐藏。因此,我想检查登录用户的权限,然后将导航的变量设置为true
or false
。
为此,我有两个组件: Mynavbar.component.ts
和 my login.component.ts
. 在我navbar.component.ts
的里面是这样的布尔值(15)->
canAddHardware
canChangeUserRights
canEditBlog
...
所以现在用户登录,在我login.component.ts
的内部并且onLogin()
函数被触发。userRights.service.userHasRight('canAddHardware')
例如,我打电话给 my ,而我需要Boolean
my 内部是从 my -> true 或 falsenavbar.component.ts
返回的值userRights.service.userHasRight('canAddHardware')
我尝试了很多东西,但我无法弄清楚如何做到这一点。
解决方案
如果此组件不是同级组件,则可以创建如下消息服务:
export class ShareDataService {
messageSource = new BehaviorSubject<IMessage>({
messageType: 'message',
payload: 'something',
});
currentMessage: Observable<IMessage> = this.messageSource.asObservable();
changeMessage(message: IMessage) {
this.messageSource.next(message);
}
}
然后从您的 login.component.ts 中,您可以使用如下方法发送消息:
sendMessage(message: MessageType, data: any) {
const messageToSend: IMessage = {
messageType: message,
payload: data,
};
this.shareDataService.send(messageToSend);
}
在您的 navbar.component.ts 中,您可以在 ngOnInit 中收听该消息,例如:
this.shareDataService.currentMessage.subscribe((message: IMessage) => {
if (message === 'message') {
this.canAddHardware = true;
}
});
推荐阅读
- java - 自建http服务器无法处理邮递员请求
- node.js - Mongodb、Nodejs 和 Angular 6 中的触发和存储过程
- mongodb - 用于编辑 MongoDB 配置文件的 Bash 脚本
- java - 避免未初始化的非最终成员类/类变量
- php - php用单个数字替换连续相同的多个数字
- mysql - Laravel 无法进行任何迁移。SQL 42000 错误。迁移刷新、重置、回滚无济于事
- python - Flask - 重置密码不会修改 SQLite 数据库中的值
- php - 数据库异常 – yii\db\Exception
- angular - 我看到错误 System.config is not a function in browser console
- sql - 为什么比较数据时case语句会失败?