【问题标题】:Cant pass information from child component to parent component无法将信息从子组件传递到父组件
【发布时间】: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


【解决方案1】:
  • 首先你的应用组件不是登录的父亲
  • 第二个路由器出口调用路由器模块并指示角度去哪里

如果你添加

<login-componet (childEvent)="message=$event"></login-componet>

在应用程序组件中这是可行的,但这是不好的做法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 2023-03-30
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 2021-07-04
    相关资源
    最近更新 更多