【发布时间】:2019-10-19 02:59:36
【问题描述】:
我正在尝试将一个标志从我的登录组件传递到我的应用程序组件,以便在用户登录后更改按钮。
我不确定我是否可以说这是父子关系,因为我并没有真正在我的应用程序组件上使用子装饰器,而是使用路由器插座,但我这样做的方式应该可以这样工作.
在我的 appComponent.html 上有
<router-outlet (childEvent)="message=$event"></router-outlet>
Test: {{message}}
在我的 AppComponent 我有
public message;
在我的 loginComponent 我有
@Output() public childEvent = new EventEmitter();
.
.
.
loginUser(): void {
this.loginService.loginUser(this.userNameLogin, this.userPasswordLogin).subscribe(
data => {
if (data.statusCode === 202) {
.
.
.
this.childEvent.emit('true');
}
},
error => {
.
.
.
}
);
}
我认为这就是对这个主题很重要的所有代码,我已经尝试从
更改代码(childEvent)="message=$event"
到
(childEvent)="message($event)"
这也没用
发生的情况是 {{message}} 没有显示任何内容,它应该在测试后显示为 true:
我希望有一个从子级到应用程序的布尔变量,以便我可以操纵显示的信息。
对不起,如果我让这有点混乱,但这是我能解释的最佳方式。 提前感谢任何愿意提供帮助的人!
【问题讨论】:
-
你在哪里假设
RouterOutlet有一个叫做childEvent的东西? ;) angular.io/api/router/RouterOutlet -
没有通过router-outlet的父子关系。所以你不能使用 Input 或 Output 装饰器。
-
对于这种情况,您需要通过服务进行通信 :) angular.io/guide/…
-
是的,我相信那是我的错误。不应该将其用作父子关系。谢谢大家的帮助!
-
您可以像@AJT_82 所说的那样通过服务传递这个值,或者为所有“内部”组件创建相同的发射器
标签: angular routes output router-outlet