【问题标题】:Angular html nestingAngular html嵌套
【发布时间】:2018-12-08 04:45:49
【问题描述】:

假设我在一些上层类中有一些看起来像这样的角度模板代码

    <outer-component>
        <a></a>
    </outer-component>

&lt;a&gt; 可以是扩展在别处定义的某个接口的任何模块,&lt;outer-component&gt; 是否有办法获取&lt;a&gt; 或放置在标签内的任何内容并与之通信,特别是能够监听以和上面的 sn-p 一样简洁的方式绑定到函数或绑定到变量?

【问题讨论】:

  • 对我来说这听起来像你能在javascript中定义一个变量。我通常不是其中之一,但 RTFM 是这里的答案
  • 我说得对,但这更多的是设计原则,我可以编写一个包装类来允许这样的事情发生吗?我已经阅读了手册,我只需要一些帮助,让我的想法是使用 html 嵌套作为这些孩子之间交流的一种方式

标签: html angular typescript


【解决方案1】:

如果您想在父母和孩子之间共享数据(分层关系),您可以使用EventEmitter 允许父母从孩子那里获取数据。

在子组件中:

import { Component, Input, Output, EventEmitter } from 'angular/core';

@Component({
    selector: 'app-child',
    template: `
        <h3>Child</h3>
        Say {{message}}
        <button (click)="sendMessage()"></button>
    ´,
    styleUrls: ['pathToStyles.css']
 })

export class ChildComponent {

    message: string = "Hello world";

    @Output() messageEvent = new EventEmitter<string>();

    constructor() {}

    sendMessage() {
        this.messageEvent.emit(this.message);
    }
}

在父组件中:

import { Component } from '@angular/core';

@Component({
     selector: 'app-parent',
     template: `
     Message: {{message}}
          <app-child (messageEvent)="receiveMessage($event)"></app-child>
          `,
     styleUrls: ['pathToStyles.css']
})

export class ParentComponent {

    constructor() { }

    message:string;

    receiveMessage($event) {
        this.message = $event
    }
}

【讨论】:

  • 感谢@Juan 的回答,但这并不能完全回答我的问题,所以在这种情况下孩子是可变的,父母从父父母那里接收孩子我是否可以访问这些孩子在父级中仅来自上面的 html 定义?
  • 据我所知,组件无论是否嵌套都无法访问其他组件。所以你需要使用 EventEmitter、ViewChild() 或服务之类的东西。
  • 这就是我所担心的,希望其他人对此有所了解,谢谢
猜你喜欢
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2015-10-22
  • 2015-05-06
  • 1970-01-01
  • 2021-12-23
  • 2018-10-13
相关资源
最近更新 更多